parent
1cd1d906bf
commit
a0a8fa1ca7
19 changed files with 1191 additions and 1146 deletions
@ -1,138 +1,113 @@ |
|||||||
package com.teaching.backend.controller.favour; |
package com.teaching.backend.controller.favour; |
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
import com.teaching.backend.common.BaseResponse; |
import com.teaching.backend.common.BaseResponse; |
||||||
import com.teaching.backend.common.ErrorCode; |
import com.teaching.backend.common.ErrorCode; |
||||||
import com.teaching.backend.common.ResultUtils; |
import com.teaching.backend.common.ResultUtils; |
||||||
import com.teaching.backend.exception.BusinessException; |
import com.teaching.backend.exception.BusinessException; |
||||||
|
import com.teaching.backend.model.dto.favour.courseFavour.CourseFavourAddRequest; |
||||||
|
import com.teaching.backend.model.dto.favour.courseFavour.CourseFavourAllRequest; |
||||||
import com.teaching.backend.model.dto.favour.courseFavour.CourseFavourAddRequest; |
import com.teaching.backend.model.dto.favour.courseFavour.CourseFavourQueryRequest; |
||||||
import com.teaching.backend.model.dto.favour.courseFavour.CourseFavourAllRequest; |
import com.teaching.backend.model.entity.courses.Courses; |
||||||
import com.teaching.backend.model.dto.favour.courseFavour.CourseFavourListRequest; |
import com.teaching.backend.model.vo.favour.CourseFavourDetailVO; |
||||||
import com.teaching.backend.model.dto.favour.courseFavour.CourseFavourQueryRequest; |
import com.teaching.backend.service.favour.SeCourseFavourService; |
||||||
import com.teaching.backend.model.entity.courses.Courses; |
import lombok.extern.slf4j.Slf4j; |
||||||
import com.teaching.backend.model.entity.favour.SeCourseFavour; |
import org.apache.commons.lang3.StringUtils; |
||||||
import com.teaching.backend.model.vo.CoursesVO; |
import org.springframework.web.bind.annotation.PostMapping; |
||||||
import com.teaching.backend.model.vo.favour.CourseFavourDetailVO; |
import org.springframework.web.bind.annotation.RequestBody; |
||||||
import com.teaching.backend.service.courses.ICoursesService; |
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
import com.teaching.backend.service.favour.SeCourseFavourService; |
import org.springframework.web.bind.annotation.RestController; |
||||||
import lombok.extern.slf4j.Slf4j; |
|
||||||
import org.apache.commons.lang3.StringUtils; |
import javax.annotation.Resource; |
||||||
import org.springframework.beans.BeanUtils; |
import java.util.List; |
||||||
import org.springframework.beans.factory.annotation.Autowired; |
|
||||||
import org.springframework.web.bind.annotation.PostMapping; |
/** |
||||||
import org.springframework.web.bind.annotation.RequestBody; |
* @Author:youhang |
||||||
import org.springframework.web.bind.annotation.RequestMapping; |
* @Date:2024-05-30-20:22 |
||||||
import org.springframework.web.bind.annotation.RestController; |
* @Description: |
||||||
|
*/ |
||||||
import javax.annotation.Resource; |
@RestController |
||||||
import java.util.List; |
@RequestMapping("/course_favour") |
||||||
|
@Slf4j |
||||||
/** |
public class SeCourseFavourController { |
||||||
* @Author:youhang |
|
||||||
* @Date:2024-05-30-20:22 |
@Resource |
||||||
* @Description: |
private SeCourseFavourService seCourseFavourService; |
||||||
*/ |
|
||||||
@RestController |
|
||||||
@RequestMapping("/course_favour") |
|
||||||
@Slf4j |
/** |
||||||
public class SeCourseFavourController { |
* 收藏/取消收藏 |
||||||
|
* |
||||||
@Resource |
* @param courseFavourAddRequest |
||||||
private SeCourseFavourService seCourseFavourService; |
* @return result 执行情况 |
||||||
|
*/ |
||||||
|
@PostMapping("/add") |
||||||
/** |
// 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
|
||||||
* 点赞 |
public BaseResponse<Boolean> doFavour(@RequestBody CourseFavourAddRequest courseFavourAddRequest) { |
||||||
* |
System.out.println(courseFavourAddRequest); |
||||||
* @param courseFavourAddRequest |
//判断字段是否为空
|
||||||
* @return result 执行情况 |
if (StringUtils.isAnyBlank(courseFavourAddRequest.getCourseId(), courseFavourAddRequest.getUserId())) { |
||||||
*/ |
throw new BusinessException(ErrorCode.PARAMS_ERROR); |
||||||
@PostMapping("/add") |
} |
||||||
// todo 后期加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
|
|
||||||
public BaseResponse<Boolean> doFavour(@RequestBody CourseFavourAddRequest courseFavourAddRequest) { |
return seCourseFavourService.doCourseFavour(courseFavourAddRequest.getCourseId(), courseFavourAddRequest.getUserId()); |
||||||
System.out.println(courseFavourAddRequest); |
|
||||||
if (StringUtils.isAnyBlank(courseFavourAddRequest.getCourseId(), courseFavourAddRequest.getUserId())) { |
} |
||||||
throw new BusinessException(ErrorCode.PARAMS_ERROR); |
|
||||||
} |
|
||||||
// todo 从数据库中校验是否存在courseid , userid
|
/** |
||||||
Boolean result = seCourseFavourService.doCourseFavour(courseFavourAddRequest.getCourseId(), courseFavourAddRequest.getUserId()); |
* 课程点赞总数 |
||||||
return ResultUtils.success(result); |
* |
||||||
} |
* @param courseFavourAddRequest |
||||||
|
* @return result 课程点赞总数 |
||||||
|
*/ |
||||||
/** |
@PostMapping("/count") |
||||||
* 课程点赞总数 |
// HttpServletRequest request 在一个fitter里面进行鉴权操作
|
||||||
* |
public BaseResponse<Long> favourCount(@RequestBody CourseFavourAddRequest courseFavourAddRequest) { |
||||||
* @param courseFavourAddRequest |
if (StringUtils.isAnyBlank(courseFavourAddRequest.getCourseId())) { |
||||||
* @return result 课程点赞总数 |
throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空"); |
||||||
*/ |
} |
||||||
@PostMapping("/count") |
return seCourseFavourService.favourCount(courseFavourAddRequest.getCourseId()); |
||||||
// todo 后期加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
|
} |
||||||
public BaseResponse<Long> favourCount(@RequestBody CourseFavourAddRequest courseFavourAddRequest) { |
|
||||||
if (StringUtils.isAnyBlank(courseFavourAddRequest.getCourseId())) { |
/** |
||||||
throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空"); |
* 课程下资源和知识点点赞总数 |
||||||
} |
* |
||||||
// todo 从数据库中校验是否存在courseid
|
* @param courseFavourAllRequest |
||||||
|
* @return result 课程下资源和知识点点赞总数 |
||||||
Long result = seCourseFavourService.favourCount(courseFavourAddRequest.getCourseId()); |
*/ |
||||||
return ResultUtils.success(result); |
@PostMapping("/countAll") |
||||||
} |
// todo 后期加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
|
||||||
|
public BaseResponse<Long> courseCount(@RequestBody CourseFavourAllRequest courseFavourAllRequest) { |
||||||
/** |
if (StringUtils.isAnyBlank(courseFavourAllRequest.getCourseId())) { |
||||||
* 课程下资源和知识点点赞总数 |
throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空"); |
||||||
* |
} |
||||||
* @param courseFavourAllRequest |
// todo 从数据库中校验是否存在courseid
|
||||||
* @return result 课程下资源和知识点点赞总数 |
|
||||||
*/ |
return seCourseFavourService.courseCount(courseFavourAllRequest.getCourseId()); |
||||||
@PostMapping("/countAll") |
} |
||||||
// todo 后期加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
|
|
||||||
public BaseResponse<Long> courseCount(@RequestBody CourseFavourAllRequest courseFavourAllRequest) { |
|
||||||
if (StringUtils.isAnyBlank(courseFavourAllRequest.getCourseId())) { |
|
||||||
throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空"); |
/** |
||||||
} |
* 分页获取课程列表 |
||||||
// todo 从数据库中校验是否存在courseid
|
* |
||||||
|
* @return |
||||||
Long result = seCourseFavourService.courseCount(courseFavourAllRequest.getCourseId()); |
*/ |
||||||
return ResultUtils.success(result); |
@PostMapping("/list/page") |
||||||
} |
public BaseResponse<Page<CourseFavourDetailVO>> listPostByPage(@RequestBody CourseFavourQueryRequest courseFavourQueryRequest) { |
||||||
|
long current = courseFavourQueryRequest.getCurrent(); |
||||||
/** |
long size = courseFavourQueryRequest.getPageSize(); |
||||||
* 某个用户课程列表 |
String userId = courseFavourQueryRequest.getUserId(); |
||||||
* |
List<String> ids = seCourseFavourService.courseList(userId); |
||||||
* @param courseFavourListRequest |
QueryWrapper<Courses> courseQueryWrapper = new QueryWrapper<>(); |
||||||
* @return result 某个用户课程列表 |
courseQueryWrapper.in("id", ids); |
||||||
*/ |
Page<CourseFavourDetailVO> courseFavourDetailVOPage = seCourseFavourService.listCourseFavourByPage(new Page<>(current, size), courseQueryWrapper); |
||||||
@PostMapping("/countList") |
|
||||||
// todo 后期加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
|
return ResultUtils.success(courseFavourDetailVOPage); |
||||||
public BaseResponse<List<String>> courseList(@RequestBody CourseFavourListRequest courseFavourListRequest) { |
} |
||||||
if (StringUtils.isAnyBlank(courseFavourListRequest.getUserId())) { |
|
||||||
throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数-用户id不能为空"); |
|
||||||
} |
} |
||||||
// todo 从数据库中校验是否存在userid
|
|
||||||
List<String> result = seCourseFavourService.courseList(courseFavourListRequest.getUserId()); |
|
||||||
return ResultUtils.success(result); |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* 分页获取列表(仅管理员) |
|
||||||
* |
|
||||||
* @return |
|
||||||
*/ |
|
||||||
@PostMapping("/list/page") |
|
||||||
public BaseResponse<Page<CourseFavourDetailVO>> listPostByPage(@RequestBody CourseFavourQueryRequest courseFavourQueryRequest) { |
|
||||||
long current = courseFavourQueryRequest.getCurrent(); |
|
||||||
long size = courseFavourQueryRequest.getPageSize(); |
|
||||||
String userId = courseFavourQueryRequest.getUserId(); |
|
||||||
List<String> ids = seCourseFavourService.courseList(userId); |
|
||||||
QueryWrapper<Courses> courseQueryWrapper = new QueryWrapper<>(); |
|
||||||
courseQueryWrapper.in("id", ids); |
|
||||||
Page<CourseFavourDetailVO> courseFavourDetailVOPage = seCourseFavourService.listCourseFavourByPage(new Page<>(current, size), courseQueryWrapper); |
|
||||||
|
|
||||||
return ResultUtils.success(courseFavourDetailVOPage); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
} |
|
||||||
|
@ -1,50 +1,47 @@ |
|||||||
package com.teaching.backend.controller.favour; |
package com.teaching.backend.controller.favour; |
||||||
|
|
||||||
import com.teaching.backend.common.BaseResponse; |
import com.teaching.backend.common.BaseResponse; |
||||||
import com.teaching.backend.common.ErrorCode; |
import com.teaching.backend.common.ErrorCode; |
||||||
import com.teaching.backend.common.ResultUtils; |
import com.teaching.backend.exception.BusinessException; |
||||||
import com.teaching.backend.exception.BusinessException; |
import com.teaching.backend.model.dto.favour.knowFavour.KnowFavourAddRequest; |
||||||
|
import com.teaching.backend.service.favour.SeKnowFavourService; |
||||||
import com.teaching.backend.model.dto.favour.knowFavour.KnowFavourAddRequest; |
import lombok.extern.slf4j.Slf4j; |
||||||
import com.teaching.backend.service.favour.SeKnowFavourService; |
import org.apache.commons.lang3.StringUtils; |
||||||
import lombok.extern.slf4j.Slf4j; |
import org.springframework.web.bind.annotation.PostMapping; |
||||||
import org.apache.commons.lang3.StringUtils; |
import org.springframework.web.bind.annotation.RequestBody; |
||||||
import org.springframework.web.bind.annotation.PostMapping; |
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
import org.springframework.web.bind.annotation.RequestBody; |
import org.springframework.web.bind.annotation.RestController; |
||||||
import org.springframework.web.bind.annotation.RequestMapping; |
|
||||||
import org.springframework.web.bind.annotation.RestController; |
import javax.annotation.Resource; |
||||||
|
|
||||||
import javax.annotation.Resource; |
/** |
||||||
|
* @Author:youhang |
||||||
/** |
* @Date:2024-05-30-20:22 |
||||||
* @Author:youhang |
* @Description: |
||||||
* @Date:2024-05-30-20:22 |
*/ |
||||||
* @Description: |
@RestController |
||||||
*/ |
@RequestMapping("/know_favour") |
||||||
@RestController |
@Slf4j |
||||||
@RequestMapping("/know_favour") |
public class SeKnowFavourController { |
||||||
@Slf4j |
|
||||||
public class SeKnowFavourController { |
@Resource |
||||||
|
private SeKnowFavourService seKnowFavourService; |
||||||
@Resource |
|
||||||
private SeKnowFavourService seKnowFavourService; |
|
||||||
|
/** |
||||||
|
* 知识点收藏 |
||||||
/** |
* |
||||||
* 点赞 |
* @param knowFavourAddRequest |
||||||
* |
* @return result 执行情况 |
||||||
* @param knowFavourAddRequest |
*/ |
||||||
* @return result 执行情况 |
@PostMapping("/add") |
||||||
*/ |
// 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
|
||||||
@PostMapping("/add") |
public BaseResponse<Boolean> doFavour(@RequestBody KnowFavourAddRequest knowFavourAddRequest) { |
||||||
// todo 后期加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
|
if (StringUtils.isAnyBlank(knowFavourAddRequest.getCourseId(), knowFavourAddRequest.getKnowId(), knowFavourAddRequest.getUserId())) { |
||||||
public BaseResponse<Boolean> doFavour(@RequestBody KnowFavourAddRequest knowFavourAddRequest) { |
throw new BusinessException(ErrorCode.PARAMS_ERROR); |
||||||
if (StringUtils.isAnyBlank(knowFavourAddRequest.getCourseId(), knowFavourAddRequest.getKnowId(), knowFavourAddRequest.getUserId())) { |
} |
||||||
throw new BusinessException(ErrorCode.PARAMS_ERROR); |
return seKnowFavourService.doKnowFavour(knowFavourAddRequest.getCourseId(), knowFavourAddRequest.getKnowId(), knowFavourAddRequest.getUserId()); |
||||||
} |
|
||||||
// todo 从数据库中校验是否存在knowid , userid ,courseid
|
} |
||||||
Boolean result = seKnowFavourService.doKnowFavour(knowFavourAddRequest.getCourseId(), knowFavourAddRequest.getKnowId(), knowFavourAddRequest.getUserId()); |
|
||||||
return ResultUtils.success(result); |
} |
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
@ -1,51 +1,48 @@ |
|||||||
package com.teaching.backend.controller.favour; |
package com.teaching.backend.controller.favour; |
||||||
|
|
||||||
import com.teaching.backend.common.BaseResponse; |
import com.teaching.backend.common.BaseResponse; |
||||||
import com.teaching.backend.common.ErrorCode; |
import com.teaching.backend.common.ErrorCode; |
||||||
import com.teaching.backend.common.ResultUtils; |
import com.teaching.backend.exception.BusinessException; |
||||||
import com.teaching.backend.exception.BusinessException; |
import com.teaching.backend.model.dto.favour.resourceFavour.ResourceFavourAddRequest; |
||||||
|
import com.teaching.backend.service.favour.SeResourceFavourService; |
||||||
import com.teaching.backend.model.dto.favour.resourceFavour.ResourceFavourAddRequest; |
import lombok.extern.slf4j.Slf4j; |
||||||
import com.teaching.backend.service.favour.SeResourceFavourService; |
import org.apache.commons.lang3.StringUtils; |
||||||
import lombok.extern.slf4j.Slf4j; |
import org.springframework.web.bind.annotation.PostMapping; |
||||||
import org.apache.commons.lang3.StringUtils; |
import org.springframework.web.bind.annotation.RequestBody; |
||||||
import org.springframework.web.bind.annotation.PostMapping; |
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
import org.springframework.web.bind.annotation.RequestBody; |
import org.springframework.web.bind.annotation.RestController; |
||||||
import org.springframework.web.bind.annotation.RequestMapping; |
|
||||||
import org.springframework.web.bind.annotation.RestController; |
import javax.annotation.Resource; |
||||||
|
|
||||||
import javax.annotation.Resource; |
/** |
||||||
|
* @Author:youhang |
||||||
/** |
* @Date:2024-05-30-20:22 |
||||||
* @Author:youhang |
* @Description: |
||||||
* @Date:2024-05-30-20:22 |
*/ |
||||||
* @Description: |
@RestController |
||||||
*/ |
@RequestMapping("/resource_favour") |
||||||
@RestController |
@Slf4j |
||||||
@RequestMapping("/resource_favour") |
public class SeResourceFavourController { |
||||||
@Slf4j |
|
||||||
public class SeResourceFavourController { |
@Resource |
||||||
|
private SeResourceFavourService seResourceFavourService; |
||||||
@Resource |
|
||||||
private SeResourceFavourService seResourceFavourService; |
|
||||||
|
/** |
||||||
|
* 资源收藏 |
||||||
/** |
* |
||||||
* 收藏 |
* @param resourceFavourAddRequest |
||||||
* |
* @return result 执行情况 |
||||||
* @param resourceFavourAddRequest |
*/ |
||||||
* @return result 执行情况 |
@PostMapping("/add") |
||||||
*/ |
// 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
|
||||||
@PostMapping("/add") |
public BaseResponse<Boolean> doFavour(@RequestBody ResourceFavourAddRequest resourceFavourAddRequest) { |
||||||
// todo 后期加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
|
if (StringUtils.isAnyBlank(resourceFavourAddRequest.getCourseId(), resourceFavourAddRequest.getResourceId(), resourceFavourAddRequest.getUserId())) { |
||||||
public BaseResponse<Boolean> doFavour(@RequestBody ResourceFavourAddRequest resourceFavourAddRequest) { |
throw new BusinessException(ErrorCode.PARAMS_ERROR); |
||||||
if (StringUtils.isAnyBlank(resourceFavourAddRequest.getCourseId(), resourceFavourAddRequest.getResourceId(), resourceFavourAddRequest.getUserId())) { |
} |
||||||
throw new BusinessException(ErrorCode.PARAMS_ERROR); |
|
||||||
} |
return seResourceFavourService.doResourceFavour(resourceFavourAddRequest.getCourseId(), resourceFavourAddRequest.getResourceId(), resourceFavourAddRequest.getUserId()); |
||||||
// todo 从数据库中校验是否存在resourceid , userid ,courseid
|
} |
||||||
Boolean result = seResourceFavourService.doResourceFavour(resourceFavourAddRequest.getCourseId(), resourceFavourAddRequest.getResourceId(), resourceFavourAddRequest.getUserId()); |
|
||||||
return ResultUtils.success(result); |
|
||||||
} |
} |
||||||
|
|
||||||
|
|
||||||
} |
|
||||||
|
@ -1,87 +1,83 @@ |
|||||||
package com.teaching.backend.controller.thumb; |
package com.teaching.backend.controller.thumb; |
||||||
|
|
||||||
import com.teaching.backend.common.BaseResponse; |
import com.teaching.backend.common.BaseResponse; |
||||||
import com.teaching.backend.common.ErrorCode; |
import com.teaching.backend.common.ErrorCode; |
||||||
import com.teaching.backend.common.ResultUtils; |
import com.teaching.backend.exception.BusinessException; |
||||||
import com.teaching.backend.exception.BusinessException; |
import com.teaching.backend.model.dto.thumb.coursethumb.CourseThumbAddRequest; |
||||||
import com.teaching.backend.model.dto.thumb.coursethumb.CourseThumbAddRequest; |
import com.teaching.backend.model.dto.thumb.coursethumb.CourseThumbAllRequest; |
||||||
import com.teaching.backend.model.dto.thumb.coursethumb.CourseThumbAllRequest; |
import com.teaching.backend.service.thumb.SeCourseThumbService; |
||||||
import com.teaching.backend.service.thumb.SeCourseThumbService; |
import lombok.extern.slf4j.Slf4j; |
||||||
import lombok.extern.slf4j.Slf4j; |
import org.apache.commons.lang3.StringUtils; |
||||||
import org.apache.commons.lang3.StringUtils; |
import org.springframework.web.bind.annotation.PostMapping; |
||||||
import org.springframework.web.bind.annotation.PostMapping; |
import org.springframework.web.bind.annotation.RequestBody; |
||||||
import org.springframework.web.bind.annotation.RequestBody; |
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
import org.springframework.web.bind.annotation.RequestMapping; |
import org.springframework.web.bind.annotation.RestController; |
||||||
import org.springframework.web.bind.annotation.RestController; |
|
||||||
|
import javax.annotation.Resource; |
||||||
import javax.annotation.Resource; |
|
||||||
|
/** |
||||||
/** |
* @Author:youhang |
||||||
* @Author:youhang |
* @Date:2024-05-30-20:22 |
||||||
* @Date:2024-05-30-20:22 |
* @Description: |
||||||
* @Description: |
*/ |
||||||
*/ |
@RestController |
||||||
@RestController |
@RequestMapping("/course_thumb") |
||||||
@RequestMapping("/course_thumb") |
@Slf4j |
||||||
@Slf4j |
public class SeCourseThumbController { |
||||||
public class SeCourseThumbController { |
|
||||||
|
@Resource |
||||||
@Resource |
private SeCourseThumbService seCourseThumbService; |
||||||
private SeCourseThumbService seCourseThumbService; |
|
||||||
|
|
||||||
|
/** |
||||||
/** |
* 点赞/取消点赞 |
||||||
* 点赞/取消点赞 |
* |
||||||
* |
* @param courseThumbAddRequest |
||||||
* @param courseThumbAddRequest |
* @return result 执行情况 |
||||||
* @return result 执行情况 |
*/ |
||||||
*/ |
@PostMapping("/") |
||||||
@PostMapping("/") |
// HttpServletRequest request 在一个fitter里面进行鉴权操作
|
||||||
// todo 后期加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
|
public BaseResponse<Boolean> doThumb(@RequestBody CourseThumbAddRequest courseThumbAddRequest) { |
||||||
public BaseResponse<Boolean> doThumb(@RequestBody CourseThumbAddRequest courseThumbAddRequest) { |
if (StringUtils.isAnyBlank(courseThumbAddRequest.getCourseId(), courseThumbAddRequest.getUserId())) { |
||||||
if (StringUtils.isAnyBlank(courseThumbAddRequest.getCourseId(), courseThumbAddRequest.getUserId())) { |
throw new BusinessException(ErrorCode.PARAMS_ERROR); |
||||||
throw new BusinessException(ErrorCode.PARAMS_ERROR); |
} |
||||||
} |
|
||||||
// todo 从数据库中校验是否存在courseid , userid 从课程表和用户表查询
|
return seCourseThumbService.doCourseThumb(courseThumbAddRequest.getCourseId(), courseThumbAddRequest.getUserId()); |
||||||
Boolean result = seCourseThumbService.doCourseThumb(courseThumbAddRequest.getCourseId(), courseThumbAddRequest.getUserId()); |
|
||||||
return ResultUtils.success(result); |
} |
||||||
} |
|
||||||
|
|
||||||
|
/** |
||||||
/** |
* 课程点赞总数 |
||||||
* 课程点赞总数 |
* |
||||||
* |
* @param courseThumbAddRequest |
||||||
* @param courseThumbAddRequest |
* @return result 课程点赞总数 |
||||||
* @return result 课程点赞总数 |
*/ |
||||||
*/ |
@PostMapping("/count") |
||||||
@PostMapping("/count") |
// HttpServletRequest request 在一个fitter里面进行鉴权操作
|
||||||
// todo 后期加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
|
public BaseResponse<Long> thumbCount(@RequestBody CourseThumbAddRequest courseThumbAddRequest) { |
||||||
public BaseResponse<Long> thumbCount(@RequestBody CourseThumbAddRequest courseThumbAddRequest) { |
if (StringUtils.isAnyBlank(courseThumbAddRequest.getCourseId())) { |
||||||
if (StringUtils.isAnyBlank(courseThumbAddRequest.getCourseId())) { |
throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空"); |
||||||
throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空"); |
} |
||||||
} |
|
||||||
// todo 从数据库中校验是否存在courseid
|
return seCourseThumbService.thumbCount(courseThumbAddRequest.getCourseId()); |
||||||
|
|
||||||
Long result = seCourseThumbService.thumbCount(courseThumbAddRequest.getCourseId()); |
} |
||||||
return ResultUtils.success(result); |
|
||||||
} |
/** |
||||||
|
* 课程下资源和知识点点赞总数 |
||||||
/** |
* |
||||||
* 课程下资源和知识点点赞总数 |
* @param courseThumbAllRequest |
||||||
* |
* @return result 课程下资源和知识点点赞总数 |
||||||
* @param courseThumbAllRequest |
*/ |
||||||
* @return result 课程下资源和知识点点赞总数 |
@PostMapping("/countAll") |
||||||
*/ |
// todo 后期加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
|
||||||
@PostMapping("/countAll") |
public BaseResponse<Long> courseCount(@RequestBody CourseThumbAllRequest courseThumbAllRequest) { |
||||||
// todo 后期加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
|
if (StringUtils.isAnyBlank(courseThumbAllRequest.getCourseId())) { |
||||||
public BaseResponse<Long> courseCount(@RequestBody CourseThumbAllRequest courseThumbAllRequest) { |
throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空"); |
||||||
if (StringUtils.isAnyBlank(courseThumbAllRequest.getCourseId())) { |
} |
||||||
throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空"); |
|
||||||
} |
return seCourseThumbService.courseCount(courseThumbAllRequest.getCourseId()); |
||||||
// todo 从数据库中校验是否存在courseid
|
} |
||||||
|
|
||||||
Long result = seCourseThumbService.courseCount(courseThumbAllRequest.getCourseId()); |
} |
||||||
return ResultUtils.success(result); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
||||||
|
@ -1,49 +1,47 @@ |
|||||||
package com.teaching.backend.controller.thumb; |
package com.teaching.backend.controller.thumb; |
||||||
|
|
||||||
import com.teaching.backend.common.BaseResponse; |
import com.teaching.backend.common.BaseResponse; |
||||||
import com.teaching.backend.common.ErrorCode; |
import com.teaching.backend.common.ErrorCode; |
||||||
import com.teaching.backend.common.ResultUtils; |
import com.teaching.backend.exception.BusinessException; |
||||||
import com.teaching.backend.exception.BusinessException; |
import com.teaching.backend.model.dto.thumb.knowthumb.KnowThumbAddRequest; |
||||||
import com.teaching.backend.model.dto.thumb.knowthumb.KnowThumbAddRequest; |
import com.teaching.backend.service.thumb.SeKnowThumbService; |
||||||
import com.teaching.backend.service.thumb.SeKnowThumbService; |
import lombok.extern.slf4j.Slf4j; |
||||||
import lombok.extern.slf4j.Slf4j; |
import org.apache.commons.lang3.StringUtils; |
||||||
import org.apache.commons.lang3.StringUtils; |
import org.springframework.web.bind.annotation.PostMapping; |
||||||
import org.springframework.web.bind.annotation.PostMapping; |
import org.springframework.web.bind.annotation.RequestBody; |
||||||
import org.springframework.web.bind.annotation.RequestBody; |
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
import org.springframework.web.bind.annotation.RequestMapping; |
import org.springframework.web.bind.annotation.RestController; |
||||||
import org.springframework.web.bind.annotation.RestController; |
|
||||||
|
import javax.annotation.Resource; |
||||||
import javax.annotation.Resource; |
|
||||||
|
/** |
||||||
/** |
* @Author:youhang |
||||||
* @Author:youhang |
* @Date:2024-05-30-20:22 |
||||||
* @Date:2024-05-30-20:22 |
* @Description: |
||||||
* @Description: |
*/ |
||||||
*/ |
@RestController |
||||||
@RestController |
@RequestMapping("/know_thumb") |
||||||
@RequestMapping("/know_thumb") |
@Slf4j |
||||||
@Slf4j |
public class SeKnowThumbController { |
||||||
public class SeKnowThumbController { |
|
||||||
|
@Resource |
||||||
@Resource |
private SeKnowThumbService seKnowThumbService; |
||||||
private SeKnowThumbService seKnowThumbService; |
|
||||||
|
|
||||||
|
/** |
||||||
/** |
* 点赞 |
||||||
* 点赞 |
* |
||||||
* |
* @param knowThumbAddRequest |
||||||
* @param knowThumbAddRequest |
* @return result 执行情况 |
||||||
* @return result 执行情况 |
*/ |
||||||
*/ |
@PostMapping("/add") |
||||||
@PostMapping("/add") |
// 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
|
||||||
// todo 后期加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
|
public BaseResponse<Boolean> doThumb(@RequestBody KnowThumbAddRequest knowThumbAddRequest) { |
||||||
public BaseResponse<Boolean> doThumb(@RequestBody KnowThumbAddRequest knowThumbAddRequest) { |
if (StringUtils.isAnyBlank(knowThumbAddRequest.getCourseId(), knowThumbAddRequest.getKnowId(), knowThumbAddRequest.getUserId())) { |
||||||
if (StringUtils.isAnyBlank(knowThumbAddRequest.getCourseId(), knowThumbAddRequest.getKnowId(), knowThumbAddRequest.getUserId())) { |
throw new BusinessException(ErrorCode.PARAMS_ERROR); |
||||||
throw new BusinessException(ErrorCode.PARAMS_ERROR); |
} |
||||||
} |
return seKnowThumbService.doKnowThumb(knowThumbAddRequest.getCourseId(), knowThumbAddRequest.getKnowId(), knowThumbAddRequest.getUserId()); |
||||||
// todo 从数据库中校验是否存在knowid , userid ,courseid
|
|
||||||
Boolean result = seKnowThumbService.doKnowThumb(knowThumbAddRequest.getCourseId(), knowThumbAddRequest.getKnowId(), knowThumbAddRequest.getUserId()); |
} |
||||||
return ResultUtils.success(result); |
|
||||||
} |
} |
||||||
|
|
||||||
} |
|
||||||
|
@ -1,49 +1,47 @@ |
|||||||
package com.teaching.backend.controller.thumb; |
package com.teaching.backend.controller.thumb; |
||||||
|
|
||||||
import com.teaching.backend.common.BaseResponse; |
import com.teaching.backend.common.BaseResponse; |
||||||
import com.teaching.backend.common.ErrorCode; |
import com.teaching.backend.common.ErrorCode; |
||||||
import com.teaching.backend.common.ResultUtils; |
import com.teaching.backend.exception.BusinessException; |
||||||
import com.teaching.backend.exception.BusinessException; |
import com.teaching.backend.model.dto.thumb.resourcethumb.ResourceThumbAddRequest; |
||||||
import com.teaching.backend.model.dto.thumb.resourcethumb.ResourceThumbAddRequest; |
import com.teaching.backend.service.thumb.SeResourceThumbService; |
||||||
import com.teaching.backend.service.thumb.SeResourceThumbService; |
import lombok.extern.slf4j.Slf4j; |
||||||
import lombok.extern.slf4j.Slf4j; |
import org.apache.commons.lang3.StringUtils; |
||||||
import org.apache.commons.lang3.StringUtils; |
import org.springframework.web.bind.annotation.PostMapping; |
||||||
import org.springframework.web.bind.annotation.PostMapping; |
import org.springframework.web.bind.annotation.RequestBody; |
||||||
import org.springframework.web.bind.annotation.RequestBody; |
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
import org.springframework.web.bind.annotation.RequestMapping; |
import org.springframework.web.bind.annotation.RestController; |
||||||
import org.springframework.web.bind.annotation.RestController; |
|
||||||
|
import javax.annotation.Resource; |
||||||
import javax.annotation.Resource; |
|
||||||
|
/** |
||||||
/** |
* @Author:youhang |
||||||
* @Author:youhang |
* @Date:2024-05-30-20:22 |
||||||
* @Date:2024-05-30-20:22 |
* @Description: |
||||||
* @Description: |
*/ |
||||||
*/ |
@RestController |
||||||
@RestController |
@RequestMapping("/resource_thumb") |
||||||
@RequestMapping("/resource_thumb") |
@Slf4j |
||||||
@Slf4j |
public class SeResourceThumbController { |
||||||
public class SeResourceThumbController { |
|
||||||
|
@Resource |
||||||
@Resource |
private SeResourceThumbService seResourceThumbService; |
||||||
private SeResourceThumbService seResourceThumbService; |
|
||||||
|
|
||||||
|
/** |
||||||
/** |
* 点赞 |
||||||
* 点赞 |
* |
||||||
* |
* @param resourceThumbAddRequest |
||||||
* @param resourceThumbAddRequest |
* @return result 执行情况 |
||||||
* @return result 执行情况 |
*/ |
||||||
*/ |
@PostMapping("/add") |
||||||
@PostMapping("/add") |
// 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
|
||||||
// todo 后期加上 HttpServletRequest request 在一个fitter里面进行鉴权操作
|
public BaseResponse<Boolean> doThumb(@RequestBody ResourceThumbAddRequest resourceThumbAddRequest) { |
||||||
public BaseResponse<Boolean> doThumb(@RequestBody ResourceThumbAddRequest resourceThumbAddRequest) { |
if (StringUtils.isAnyBlank(resourceThumbAddRequest.getCourseId(), resourceThumbAddRequest.getResourceId(), resourceThumbAddRequest.getUserId())) { |
||||||
if (StringUtils.isAnyBlank(resourceThumbAddRequest.getCourseId(), resourceThumbAddRequest.getResourceId(), resourceThumbAddRequest.getUserId())) { |
throw new BusinessException(ErrorCode.PARAMS_ERROR); |
||||||
throw new BusinessException(ErrorCode.PARAMS_ERROR); |
} |
||||||
} |
return seResourceThumbService.doResourceThumb(resourceThumbAddRequest.getCourseId(), resourceThumbAddRequest.getResourceId(), resourceThumbAddRequest.getUserId()); |
||||||
// todo 从数据库中校验是否存在resourceid , userid ,courseid
|
|
||||||
Boolean result = seResourceThumbService.doResourceThumb(resourceThumbAddRequest.getCourseId(), resourceThumbAddRequest.getResourceId(), resourceThumbAddRequest.getUserId()); |
} |
||||||
return ResultUtils.success(result); |
|
||||||
} |
} |
||||||
|
|
||||||
} |
|
||||||
|
@ -1,69 +1,65 @@ |
|||||||
package com.teaching.backend.service.favour; |
package com.teaching.backend.service.favour; |
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.Wrapper; |
import com.baomidou.mybatisplus.core.conditions.Wrapper; |
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
import com.baomidou.mybatisplus.core.metadata.IPage; |
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
import com.teaching.backend.common.BaseResponse; |
||||||
import com.baomidou.mybatisplus.extension.service.IService; |
import com.teaching.backend.model.entity.courses.Courses; |
||||||
import com.teaching.backend.common.BaseResponse; |
import com.teaching.backend.model.entity.favour.SeCourseFavour; |
||||||
import com.teaching.backend.model.dto.favour.courseFavour.CourseFavourQueryRequest; |
import com.teaching.backend.model.vo.favour.CourseFavourDetailVO; |
||||||
import com.teaching.backend.model.entity.courses.Courses; |
|
||||||
import com.teaching.backend.model.entity.favour.SeCourseFavour; |
import java.util.List; |
||||||
import com.teaching.backend.model.vo.favour.CourseFavourDetailVO; |
|
||||||
import org.springframework.web.bind.annotation.RequestBody; |
/** |
||||||
|
* @Author:youhang |
||||||
import java.util.List; |
* @Date:2024-05-30-20:22 |
||||||
|
* @Description: |
||||||
/** |
*/ |
||||||
* @Author:youhang |
public interface SeCourseFavourService extends IService<SeCourseFavour> { |
||||||
* @Date:2024-05-30-20:22 |
|
||||||
* @Description: |
/** |
||||||
*/ |
* 收藏/取消收藏 |
||||||
public interface SeCourseFavourService extends IService<SeCourseFavour> { |
* |
||||||
|
* @param courseId |
||||||
/** |
* @param userId |
||||||
* 收藏/取消收藏 |
* @return |
||||||
* |
*/ |
||||||
* @param courseId |
BaseResponse<Boolean> doCourseFavour(String courseId, String userId); |
||||||
* @param userId |
|
||||||
* @return |
|
||||||
*/ |
/** |
||||||
boolean doCourseFavour(String courseId, String userId); |
* 收藏总数 |
||||||
|
* |
||||||
|
* @param courseId |
||||||
/** |
* @return |
||||||
* 收藏总数 |
*/ |
||||||
* |
BaseResponse<Long> favourCount(String courseId); |
||||||
* @param courseId |
|
||||||
* @return |
|
||||||
*/ |
/** |
||||||
long favourCount(String courseId); |
* 课程下资源和知识点的收藏总数 |
||||||
|
* |
||||||
|
* @param courseId |
||||||
/** |
* @return |
||||||
* 课程下资源和知识点的收藏总数 |
*/ |
||||||
* |
BaseResponse<Long> courseCount(String courseId); |
||||||
* @param courseId |
|
||||||
* @return |
|
||||||
*/ |
/** |
||||||
long courseCount(String courseId); |
* 某个用户课程列表 |
||||||
|
* |
||||||
|
* @param userId |
||||||
/** |
* @return |
||||||
* 某个用户课程列表 |
*/ |
||||||
* |
List<String> courseList(String userId); |
||||||
* @param userId |
|
||||||
* @return |
/** |
||||||
*/ |
* 某个用户课程列表全部信息 |
||||||
List<String> courseList(String userId); |
* |
||||||
|
* @param page |
||||||
/** |
* @param queryWrapper |
||||||
* 某个用户课程列表全部信息 |
* @return |
||||||
* |
*/ |
||||||
* @param page |
public Page<CourseFavourDetailVO> listCourseFavourByPage(Page<Courses> page, Wrapper<Courses> queryWrapper); |
||||||
* @param queryWrapper |
|
||||||
* @return |
} |
||||||
*/ |
|
||||||
public Page<CourseFavourDetailVO> listCourseFavourByPage(Page<Courses> page, Wrapper<Courses> queryWrapper); |
|
||||||
|
|
||||||
} |
|
||||||
|
@ -1,22 +1,23 @@ |
|||||||
package com.teaching.backend.service.favour; |
package com.teaching.backend.service.favour; |
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService; |
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
import com.teaching.backend.model.entity.favour.SeKnowFavour; |
import com.teaching.backend.common.BaseResponse; |
||||||
|
import com.teaching.backend.model.entity.favour.SeKnowFavour; |
||||||
/** |
|
||||||
* @Author:youhang |
/** |
||||||
* @Date:2024-05-30-20:22 |
* @Author:youhang |
||||||
* @Description: |
* @Date:2024-05-30-20:22 |
||||||
*/ |
* @Description: |
||||||
public interface SeKnowFavourService extends IService<SeKnowFavour> { |
*/ |
||||||
|
public interface SeKnowFavourService extends IService<SeKnowFavour> { |
||||||
/** |
|
||||||
* 收藏 |
/** |
||||||
* |
* 收藏 |
||||||
* @param courseId |
* |
||||||
* @param userId |
* @param courseId |
||||||
* @return |
* @param userId |
||||||
*/ |
* @return |
||||||
boolean doKnowFavour(String courseId, String resourceId, String userId); |
*/ |
||||||
|
BaseResponse<Boolean> doKnowFavour(String courseId, String resourceId, String userId); |
||||||
} |
|
||||||
|
} |
||||||
|
@ -1,22 +1,23 @@ |
|||||||
package com.teaching.backend.service.favour; |
package com.teaching.backend.service.favour; |
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService; |
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
import com.teaching.backend.model.entity.favour.SeResourceFavour; |
import com.teaching.backend.common.BaseResponse; |
||||||
|
import com.teaching.backend.model.entity.favour.SeResourceFavour; |
||||||
/** |
|
||||||
* @Author:youhang |
/** |
||||||
* @Date:2024-05-30-20:22 |
* @Author:youhang |
||||||
* @Description: |
* @Date:2024-05-30-20:22 |
||||||
*/ |
* @Description: |
||||||
public interface SeResourceFavourService extends IService<SeResourceFavour> { |
*/ |
||||||
|
public interface SeResourceFavourService extends IService<SeResourceFavour> { |
||||||
/** |
|
||||||
* 收藏 |
/** |
||||||
* |
* 收藏 |
||||||
* @param courseId |
* |
||||||
* @param userId |
* @param courseId |
||||||
* @return |
* @param userId |
||||||
*/ |
* @return |
||||||
boolean doResourceFavour(String courseId, String resourceId, String userId); |
*/ |
||||||
|
BaseResponse<Boolean> doResourceFavour(String courseId, String resourceId, String userId); |
||||||
} |
|
||||||
|
} |
||||||
|
@ -1,162 +1,165 @@ |
|||||||
package com.teaching.backend.service.impl.favour; |
package com.teaching.backend.service.impl.favour; |
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil; |
import cn.hutool.core.collection.CollUtil; |
||||||
import com.baomidou.mybatisplus.core.conditions.Wrapper; |
import com.baomidou.mybatisplus.core.conditions.Wrapper; |
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||||
import com.baomidou.mybatisplus.core.metadata.IPage; |
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
import com.teaching.backend.common.BaseResponse; |
||||||
import com.teaching.backend.common.BaseResponse; |
import com.teaching.backend.common.ErrorCode; |
||||||
import com.teaching.backend.common.ErrorCode; |
import com.teaching.backend.common.ResultUtils; |
||||||
import com.teaching.backend.common.ResultUtils; |
import com.teaching.backend.exception.BusinessException; |
||||||
import com.teaching.backend.exception.BusinessException; |
import com.teaching.backend.mapper.courses.CoursesMapper; |
||||||
import com.teaching.backend.mapper.favour.SeCourseFavourMapper; |
import com.teaching.backend.mapper.favour.SeCourseFavourMapper; |
||||||
import com.teaching.backend.model.dto.favour.courseFavour.CourseFavourQueryRequest; |
import com.teaching.backend.model.entity.courses.Courses; |
||||||
import com.teaching.backend.model.entity.courses.Courses; |
import com.teaching.backend.model.entity.favour.SeCourseFavour; |
||||||
import com.teaching.backend.model.entity.favour.SeCourseFavour; |
import com.teaching.backend.model.entity.favour.SeKnowFavour; |
||||||
import com.teaching.backend.model.entity.favour.SeKnowFavour; |
import com.teaching.backend.model.entity.favour.SeResourceFavour; |
||||||
import com.teaching.backend.model.entity.favour.SeResourceFavour; |
import com.teaching.backend.model.vo.favour.CourseFavourDetailVO; |
||||||
|
import com.teaching.backend.service.courses.ICoursesService; |
||||||
import com.teaching.backend.model.vo.CoursesVO; |
import com.teaching.backend.service.favour.SeCourseFavourService; |
||||||
import com.teaching.backend.model.vo.favour.CourseFavourDetailVO; |
import com.teaching.backend.service.favour.SeKnowFavourService; |
||||||
import com.teaching.backend.service.courses.ICoursesService; |
import com.teaching.backend.service.favour.SeResourceFavourService; |
||||||
import com.teaching.backend.service.favour.SeCourseFavourService; |
import org.springframework.beans.BeanUtils; |
||||||
import com.teaching.backend.service.favour.SeKnowFavourService; |
import org.springframework.beans.factory.annotation.Autowired; |
||||||
import com.teaching.backend.service.favour.SeResourceFavourService; |
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
import org.springframework.beans.BeanUtils; |
import javax.annotation.Resource; |
||||||
import org.springframework.beans.factory.annotation.Autowired; |
import java.util.ArrayList; |
||||||
import org.springframework.stereotype.Service; |
import java.util.List; |
||||||
import org.springframework.web.bind.annotation.PostMapping; |
import java.util.concurrent.locks.Lock; |
||||||
import org.springframework.web.bind.annotation.RequestBody; |
import java.util.concurrent.locks.ReentrantLock; |
||||||
|
import java.util.stream.Collectors; |
||||||
import javax.annotation.Resource; |
|
||||||
import java.util.ArrayList; |
|
||||||
import java.util.List; |
/** |
||||||
import java.util.concurrent.locks.Lock; |
* @Author:youhang |
||||||
import java.util.concurrent.locks.ReentrantLock; |
* @Date:2024-05-30-20:23 |
||||||
import java.util.stream.Collectors; |
* @Description: |
||||||
|
*/ |
||||||
|
@Service |
||||||
/** |
public class SeCourseFavourServiceImpl extends ServiceImpl<SeCourseFavourMapper, SeCourseFavour> implements SeCourseFavourService { |
||||||
* @Author:youhang |
|
||||||
* @Date:2024-05-30-20:23 |
|
||||||
* @Description: |
@Resource |
||||||
*/ |
private SeResourceFavourService seResourceFavourService; |
||||||
@Service |
|
||||||
public class SeCourseFavourServiceImpl extends ServiceImpl<SeCourseFavourMapper, SeCourseFavour> implements SeCourseFavourService { |
@Resource |
||||||
|
SeKnowFavourService seKnowFavourService; |
||||||
|
|
||||||
@Resource |
@Autowired |
||||||
private SeResourceFavourService seResourceFavourService; |
CoursesMapper coursesMapper; |
||||||
|
|
||||||
@Resource |
@Autowired |
||||||
SeKnowFavourService seKnowFavourService; |
ICoursesService coursesService; |
||||||
|
|
||||||
@Autowired |
|
||||||
ICoursesService coursesService; |
|
||||||
|
@Override |
||||||
|
public BaseResponse<Boolean> doCourseFavour(String courseId, String userId) { |
||||||
@Override |
System.out.println("进入点赞" + courseId + userId); |
||||||
public boolean doCourseFavour(String courseId, String userId) { |
//从数据库中校验是否存在courseid
|
||||||
System.out.println("进入点赞" + courseId + userId); |
Courses courses = coursesMapper.selectById(courseId); |
||||||
// todo 先查询数据库记录,该用户是否点赞
|
boolean result = false; |
||||||
SeCourseFavour seCourseFavour = new SeCourseFavour(); |
if(courses == null){ |
||||||
seCourseFavour.setCourseId(courseId); |
return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"课程不存在"); |
||||||
seCourseFavour.setUserId(userId); |
} |
||||||
QueryWrapper<SeCourseFavour> favourQueryWrapper = new QueryWrapper<>(seCourseFavour); |
//查询数据库记录,该用户是否点赞
|
||||||
SeCourseFavour oldSeCourseFavour = this.getOne(favourQueryWrapper); |
SeCourseFavour seCourseFavour = new SeCourseFavour(); |
||||||
boolean result = false; |
seCourseFavour.setCourseId(courseId); |
||||||
//已点赞
|
seCourseFavour.setUserId(userId); |
||||||
if (oldSeCourseFavour != null) { |
QueryWrapper<SeCourseFavour> favourQueryWrapper = new QueryWrapper<>(seCourseFavour); |
||||||
// 取消点赞 删除记录
|
SeCourseFavour oldSeCourseFavour = this.getOne(favourQueryWrapper); |
||||||
result = this.remove(favourQueryWrapper); |
//已点赞
|
||||||
if (result) { |
if (oldSeCourseFavour != null) { |
||||||
System.out.println("取消点赞成功"); |
// 取消点赞 删除记录
|
||||||
return result; |
result = this.remove(favourQueryWrapper); |
||||||
} else { |
if (result) { |
||||||
throw new BusinessException(ErrorCode.SYSTEM_ERROR); |
System.out.println("取消点赞成功"); |
||||||
} |
return ResultUtils.success(result); |
||||||
} else { |
} else { |
||||||
// 每个用户串行点赞
|
throw new BusinessException(ErrorCode.SYSTEM_ERROR); |
||||||
// 锁必须要包裹住事务方法
|
} |
||||||
Lock lock = new ReentrantLock(); |
} else { |
||||||
lock.lock(); |
// 每个用户串行点赞
|
||||||
try { |
// 锁必须要包裹住事务方法
|
||||||
result = this.save(seCourseFavour); |
Lock lock = new ReentrantLock(); |
||||||
} catch (Exception e) { |
lock.lock(); |
||||||
throw new BusinessException(ErrorCode.OPERATION_ERROR); |
try { |
||||||
} finally { |
result = this.save(seCourseFavour); |
||||||
lock.unlock(); |
} catch (Exception e) { |
||||||
System.out.println("点赞成功"); |
throw new BusinessException(ErrorCode.OPERATION_ERROR); |
||||||
return result; |
} finally { |
||||||
} |
lock.unlock(); |
||||||
} |
System.out.println("点赞成功"); |
||||||
} |
return ResultUtils.success(result); |
||||||
|
} |
||||||
@Override |
} |
||||||
public long favourCount(String courseId) { |
} |
||||||
System.out.println("进入课程点赞统计" + courseId); |
|
||||||
QueryWrapper<SeCourseFavour> favourQueryWrapper = new QueryWrapper<>(); |
@Override |
||||||
favourQueryWrapper.eq("course_id", courseId); |
public BaseResponse<Long>favourCount(String courseId) { |
||||||
long result = this.count(favourQueryWrapper); |
//从数据库中校验是否存在courseid
|
||||||
if (result == 0) { |
QueryWrapper<SeCourseFavour> favourQueryWrapper = new QueryWrapper<>(); |
||||||
throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在"); |
favourQueryWrapper.eq("course_id", courseId); |
||||||
} else { |
long result = this.count(favourQueryWrapper); |
||||||
return result; |
if (result == 0) { |
||||||
} |
throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在"); |
||||||
} |
} else { |
||||||
|
return ResultUtils.success(result); |
||||||
@Override |
} |
||||||
public long courseCount(String courseId) { |
} |
||||||
System.out.println("进入课程下资源和知识点的点赞统计" + courseId); |
|
||||||
QueryWrapper<SeResourceFavour> ResourceQueryWrapper = new QueryWrapper<>(); |
@Override |
||||||
ResourceQueryWrapper.eq("course_id", courseId); |
public BaseResponse<Long> courseCount(String courseId) { |
||||||
long result1 = seResourceFavourService.count(ResourceQueryWrapper); |
|
||||||
QueryWrapper<SeKnowFavour> KnowQueryWrapper = new QueryWrapper<>(); |
QueryWrapper<SeResourceFavour> ResourceQueryWrapper = new QueryWrapper<>(); |
||||||
KnowQueryWrapper.eq("course_id", courseId); |
ResourceQueryWrapper.eq("course_id", courseId); |
||||||
long result2 = seKnowFavourService.count(KnowQueryWrapper); |
long result1 = seResourceFavourService.count(ResourceQueryWrapper); |
||||||
long result = result1 + result2; |
QueryWrapper<SeKnowFavour> KnowQueryWrapper = new QueryWrapper<>(); |
||||||
if (result == 0) { |
KnowQueryWrapper.eq("course_id", courseId); |
||||||
throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在"); |
long result2 = seKnowFavourService.count(KnowQueryWrapper); |
||||||
} else { |
long result = result1 + result2; |
||||||
return result; |
if (result == 0) { |
||||||
} |
throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在"); |
||||||
} |
} else { |
||||||
|
return ResultUtils.success(result); |
||||||
/** |
} |
||||||
* 某个用户课程列表 |
} |
||||||
* |
|
||||||
* @param userId |
/** |
||||||
* @return |
* 某个用户课程列表 |
||||||
*/ |
* |
||||||
@Override |
* @param userId |
||||||
public List<String> courseList(String userId) { |
* @return |
||||||
QueryWrapper<SeCourseFavour> courseQueryWrapper = new QueryWrapper<>(); |
*/ |
||||||
courseQueryWrapper.eq("user_id", userId); |
@Override |
||||||
List<String> list = this.list(courseQueryWrapper).stream().map(SeCourseFavour::getCourseId).collect(Collectors.toList()); |
public List<String> courseList(String userId) { |
||||||
return list; |
QueryWrapper<SeCourseFavour> courseQueryWrapper = new QueryWrapper<>(); |
||||||
} |
courseQueryWrapper.eq("user_id", userId); |
||||||
|
List<String> list = this.list(courseQueryWrapper).stream().map(SeCourseFavour::getCourseId).collect(Collectors.toList()); |
||||||
@Override |
return list; |
||||||
public Page<CourseFavourDetailVO> listCourseFavourByPage(Page<Courses> page, Wrapper<Courses> queryWrapper) { |
} |
||||||
Page<Courses> coursePage = coursesService.page(page, queryWrapper); |
|
||||||
Page<CourseFavourDetailVO> courseFavourVOPage = new Page<>(coursePage.getCurrent(), coursePage.getSize(), coursePage.getTotal()); |
@Override |
||||||
List<Courses> courseFavourList = coursePage.getRecords(); |
public Page<CourseFavourDetailVO> listCourseFavourByPage(Page<Courses> page, Wrapper<Courses> queryWrapper) { |
||||||
//若数据为空,直接返回
|
Page<Courses> coursePage = coursesService.page(page, queryWrapper); |
||||||
if (CollUtil.isEmpty(courseFavourList)) { |
Page<CourseFavourDetailVO> courseFavourVOPage = new Page<>(coursePage.getCurrent(), coursePage.getSize(), coursePage.getTotal()); |
||||||
return courseFavourVOPage; |
List<Courses> courseFavourList = coursePage.getRecords(); |
||||||
} |
//若数据为空,直接返回
|
||||||
//过滤字段
|
if (CollUtil.isEmpty(courseFavourList)) { |
||||||
List<CourseFavourDetailVO> courseFavourDetailVOList = new ArrayList<>(); |
return courseFavourVOPage; |
||||||
for (int i = 0; i < courseFavourList.size(); i++) { |
} |
||||||
CourseFavourDetailVO courseFavourDetailVO = new CourseFavourDetailVO(); |
//过滤字段
|
||||||
BeanUtils.copyProperties(courseFavourList.get(i), courseFavourDetailVO); |
List<CourseFavourDetailVO> courseFavourDetailVOList = new ArrayList<>(); |
||||||
courseFavourDetailVOList.add(courseFavourDetailVO); |
for (int i = 0; i < courseFavourList.size(); i++) { |
||||||
} |
CourseFavourDetailVO courseFavourDetailVO = new CourseFavourDetailVO(); |
||||||
courseFavourVOPage.setRecords(courseFavourDetailVOList); |
BeanUtils.copyProperties(courseFavourList.get(i), courseFavourDetailVO); |
||||||
return courseFavourVOPage; |
courseFavourDetailVOList.add(courseFavourDetailVO); |
||||||
} |
} |
||||||
|
courseFavourVOPage.setRecords(courseFavourDetailVOList); |
||||||
|
return courseFavourVOPage; |
||||||
} |
} |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
@ -1,64 +1,77 @@ |
|||||||
package com.teaching.backend.service.impl.favour; |
package com.teaching.backend.service.impl.favour; |
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
import com.teaching.backend.common.ErrorCode; |
import com.teaching.backend.common.BaseResponse; |
||||||
import com.teaching.backend.exception.BusinessException; |
import com.teaching.backend.common.ErrorCode; |
||||||
import com.teaching.backend.mapper.favour.SeKnowFavourMapper; |
import com.teaching.backend.common.ResultUtils; |
||||||
import com.teaching.backend.model.entity.favour.SeKnowFavour; |
import com.teaching.backend.exception.BusinessException; |
||||||
|
import com.teaching.backend.mapper.courses.CoursesMapper; |
||||||
import com.teaching.backend.service.favour.SeKnowFavourService; |
import com.teaching.backend.mapper.favour.SeKnowFavourMapper; |
||||||
import org.springframework.stereotype.Service; |
import com.teaching.backend.model.entity.courses.Courses; |
||||||
|
import com.teaching.backend.model.entity.favour.SeKnowFavour; |
||||||
import java.util.concurrent.locks.Lock; |
import com.teaching.backend.service.favour.SeKnowFavourService; |
||||||
import java.util.concurrent.locks.ReentrantLock; |
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
/** |
import java.util.concurrent.locks.Lock; |
||||||
* @Author:youhang |
import java.util.concurrent.locks.ReentrantLock; |
||||||
* @Date:2024-05-30-20:23 |
|
||||||
* @Description: |
|
||||||
*/ |
/** |
||||||
@Service |
* @Author:youhang |
||||||
public class SeKnowFavourServiceImpl extends ServiceImpl<SeKnowFavourMapper, SeKnowFavour> implements SeKnowFavourService { |
* @Date:2024-05-30-20:23 |
||||||
|
* @Description: |
||||||
@Override |
*/ |
||||||
public boolean doKnowFavour(String courseId, String knowId, String userId) { |
@Service |
||||||
System.out.println("进入知识点点赞" + knowId + userId); |
public class SeKnowFavourServiceImpl extends ServiceImpl<SeKnowFavourMapper, SeKnowFavour> implements SeKnowFavourService { |
||||||
// 先查询数据库记录,该用户是否点赞
|
|
||||||
SeKnowFavour seKnowFavour = new SeKnowFavour(); |
@Autowired |
||||||
seKnowFavour.setKnowId(knowId); |
CoursesMapper coursesMapper; |
||||||
seKnowFavour.setUserId(userId); |
|
||||||
seKnowFavour.setCourseId(courseId); |
@Override |
||||||
QueryWrapper<SeKnowFavour> favourQueryWrapper = new QueryWrapper<>(seKnowFavour); |
public BaseResponse<Boolean> doKnowFavour(String courseId, String knowId, String userId) { |
||||||
SeKnowFavour oldSeKnowFavour = this.getOne(favourQueryWrapper); |
// todo 判断知识点id是否存在
|
||||||
boolean result = false; |
|
||||||
//已点赞
|
//从数据库中校验是否存在courseid
|
||||||
if (oldSeKnowFavour != null) { |
Courses courses = coursesMapper.selectById(courseId); |
||||||
// 取消点赞 删除记录
|
boolean result = false; |
||||||
result = this.remove(favourQueryWrapper); |
if(courses == null){ |
||||||
if (result) { |
return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"课程不存在"); |
||||||
System.out.println("取消点赞成功"); |
} |
||||||
return result; |
// 先查询数据库记录,该用户是否收藏
|
||||||
} else { |
SeKnowFavour seKnowFavour = new SeKnowFavour(); |
||||||
throw new BusinessException(ErrorCode.SYSTEM_ERROR); |
seKnowFavour.setKnowId(knowId); |
||||||
} |
seKnowFavour.setUserId(userId); |
||||||
} else { |
seKnowFavour.setCourseId(courseId); |
||||||
// 每个用户串行点赞
|
QueryWrapper<SeKnowFavour> favourQueryWrapper = new QueryWrapper<>(seKnowFavour); |
||||||
// 锁必须要包裹住事务方法
|
SeKnowFavour oldSeKnowFavour = this.getOne(favourQueryWrapper); |
||||||
Lock lock = new ReentrantLock(); |
//已收藏
|
||||||
lock.lock(); |
if (oldSeKnowFavour != null) { |
||||||
try { |
// 取消收藏 删除记录
|
||||||
result = this.save(seKnowFavour); |
result = this.remove(favourQueryWrapper); |
||||||
} catch (Exception e) { |
if (result) { |
||||||
throw new BusinessException(ErrorCode.OPERATION_ERROR); |
System.out.println("取消收藏成功"); |
||||||
} finally { |
return ResultUtils.success(result); |
||||||
lock.unlock(); |
} else { |
||||||
System.out.println("点赞成功"); |
throw new BusinessException(ErrorCode.SYSTEM_ERROR); |
||||||
return result; |
} |
||||||
} |
} else { |
||||||
} |
// 每个用户串行收藏
|
||||||
} |
// 锁必须要包裹住事务方法
|
||||||
|
Lock lock = new ReentrantLock(); |
||||||
|
lock.lock(); |
||||||
} |
try { |
||||||
|
result = this.save(seKnowFavour); |
||||||
|
} catch (Exception e) { |
||||||
|
throw new BusinessException(ErrorCode.OPERATION_ERROR); |
||||||
|
} finally { |
||||||
|
lock.unlock(); |
||||||
|
// System.out.println("收藏成功");
|
||||||
|
return ResultUtils.success(result); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
@ -1,65 +1,80 @@ |
|||||||
package com.teaching.backend.service.impl.favour; |
package com.teaching.backend.service.impl.favour; |
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
import com.teaching.backend.common.ErrorCode; |
import com.teaching.backend.common.BaseResponse; |
||||||
import com.teaching.backend.exception.BusinessException; |
import com.teaching.backend.common.ErrorCode; |
||||||
|
import com.teaching.backend.common.ResultUtils; |
||||||
|
import com.teaching.backend.exception.BusinessException; |
||||||
import com.teaching.backend.mapper.favour.SeResourceFavourMapper; |
import com.teaching.backend.mapper.courses.CoursesMapper; |
||||||
import com.teaching.backend.model.entity.favour.SeResourceFavour; |
import com.teaching.backend.mapper.favour.SeResourceFavourMapper; |
||||||
import com.teaching.backend.service.favour.SeResourceFavourService; |
import com.teaching.backend.model.entity.courses.Courses; |
||||||
import org.springframework.stereotype.Service; |
import com.teaching.backend.model.entity.favour.SeResourceFavour; |
||||||
|
import com.teaching.backend.service.favour.SeResourceFavourService; |
||||||
import java.util.concurrent.locks.Lock; |
import org.springframework.beans.factory.annotation.Autowired; |
||||||
import java.util.concurrent.locks.ReentrantLock; |
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import java.util.concurrent.locks.Lock; |
||||||
/** |
import java.util.concurrent.locks.ReentrantLock; |
||||||
* @Author:youhang |
|
||||||
* @Date:2024-05-30-20:23 |
|
||||||
* @Description: |
/** |
||||||
*/ |
* @Author:youhang |
||||||
@Service |
* @Date:2024-05-30-20:23 |
||||||
public class SeResourceFavourServiceImpl extends ServiceImpl<SeResourceFavourMapper, SeResourceFavour> implements SeResourceFavourService { |
* @Description: |
||||||
|
*/ |
||||||
@Override |
@Service |
||||||
public boolean doResourceFavour(String courseId, String resourceId, String userId) { |
public class SeResourceFavourServiceImpl extends ServiceImpl<SeResourceFavourMapper, SeResourceFavour> implements SeResourceFavourService { |
||||||
System.out.println("进入知识点点赞" + resourceId + userId); |
|
||||||
// 先查询数据库记录,该用户是否点赞
|
|
||||||
SeResourceFavour seResourceFavour = new SeResourceFavour(); |
@Autowired |
||||||
seResourceFavour.setResourceId(resourceId); |
CoursesMapper coursesMapper; |
||||||
seResourceFavour.setUserId(userId); |
|
||||||
seResourceFavour.setCourseId(courseId); |
@Override |
||||||
QueryWrapper<SeResourceFavour> thumbQueryWrapper = new QueryWrapper<>(seResourceFavour); |
public BaseResponse<Boolean> doResourceFavour(String courseId, String resourceId, String userId) { |
||||||
SeResourceFavour oldSeResourceFavour = this.getOne(thumbQueryWrapper); |
|
||||||
boolean result = false; |
//从数据库中校验是否存在courseid
|
||||||
//已点赞
|
Courses courses = coursesMapper.selectById(courseId); |
||||||
if (oldSeResourceFavour != null) { |
boolean result = false; |
||||||
// 取消点赞 删除记录
|
if(courses == null){ |
||||||
result = this.remove(thumbQueryWrapper); |
return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"课程不存在"); |
||||||
if (result) { |
} |
||||||
System.out.println("取消点赞成功"); |
|
||||||
return result; |
// todo 从数据库中校验是否存在resourceid
|
||||||
} else { |
|
||||||
throw new BusinessException(ErrorCode.SYSTEM_ERROR); |
// 先查询数据库记录,该用户是否收藏
|
||||||
} |
SeResourceFavour seResourceFavour = new SeResourceFavour(); |
||||||
} else { |
seResourceFavour.setResourceId(resourceId); |
||||||
// 每个用户串行点赞
|
seResourceFavour.setUserId(userId); |
||||||
// 锁必须要包裹住事务方法
|
seResourceFavour.setCourseId(courseId); |
||||||
Lock lock = new ReentrantLock(); |
QueryWrapper<SeResourceFavour> thumbQueryWrapper = new QueryWrapper<>(seResourceFavour); |
||||||
lock.lock(); |
SeResourceFavour oldSeResourceFavour = this.getOne(thumbQueryWrapper); |
||||||
try { |
//已收藏
|
||||||
result = this.save(seResourceFavour); |
if (oldSeResourceFavour != null) { |
||||||
} catch (Exception e) { |
// 取消收藏 删除记录
|
||||||
throw new BusinessException(ErrorCode.OPERATION_ERROR); |
result = this.remove(thumbQueryWrapper); |
||||||
} finally { |
if (result) { |
||||||
lock.unlock(); |
System.out.println("取消收藏成功"); |
||||||
System.out.println("点赞成功"); |
return ResultUtils.success(result); |
||||||
return result; |
} else { |
||||||
} |
throw new BusinessException(ErrorCode.SYSTEM_ERROR); |
||||||
} |
} |
||||||
} |
} else { |
||||||
|
// 每个用户串行收藏
|
||||||
|
// 锁必须要包裹住事务方法
|
||||||
} |
Lock lock = new ReentrantLock(); |
||||||
|
lock.lock(); |
||||||
|
try { |
||||||
|
result = this.save(seResourceFavour); |
||||||
|
} catch (Exception e) { |
||||||
|
throw new BusinessException(ErrorCode.OPERATION_ERROR); |
||||||
|
} finally { |
||||||
|
lock.unlock(); |
||||||
|
System.out.println("收藏成功"); |
||||||
|
return ResultUtils.success(result); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
@ -1,105 +1,131 @@ |
|||||||
package com.teaching.backend.service.impl.thumb; |
package com.teaching.backend.service.impl.thumb; |
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
import com.teaching.backend.common.ErrorCode; |
import com.teaching.backend.common.BaseResponse; |
||||||
import com.teaching.backend.exception.BusinessException; |
import com.teaching.backend.common.ErrorCode; |
||||||
import com.teaching.backend.mapper.thumb.SeCourseThumbMapper; |
import com.teaching.backend.common.ResultUtils; |
||||||
import com.teaching.backend.model.entity.thumb.SeCourseThumb; |
import com.teaching.backend.exception.BusinessException; |
||||||
import com.teaching.backend.model.entity.thumb.SeKnowThumb; |
import com.teaching.backend.mapper.courses.CoursesMapper; |
||||||
import com.teaching.backend.model.entity.thumb.SeResourceThumb; |
import com.teaching.backend.mapper.thumb.SeCourseThumbMapper; |
||||||
import com.teaching.backend.service.thumb.SeCourseThumbService; |
import com.teaching.backend.model.entity.courses.Courses; |
||||||
import com.teaching.backend.service.thumb.SeKnowThumbService; |
import com.teaching.backend.model.entity.thumb.SeCourseThumb; |
||||||
import com.teaching.backend.service.thumb.SeResourceThumbService; |
import com.teaching.backend.model.entity.thumb.SeKnowThumb; |
||||||
import org.springframework.stereotype.Service; |
import com.teaching.backend.model.entity.thumb.SeResourceThumb; |
||||||
|
import com.teaching.backend.service.thumb.SeCourseThumbService; |
||||||
import javax.annotation.Resource; |
import com.teaching.backend.service.thumb.SeKnowThumbService; |
||||||
import java.util.concurrent.locks.Lock; |
import com.teaching.backend.service.thumb.SeResourceThumbService; |
||||||
import java.util.concurrent.locks.ReentrantLock; |
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
/** |
import javax.annotation.Resource; |
||||||
* @Author:youhang |
import java.util.concurrent.locks.Lock; |
||||||
* @Date:2024-05-30-20:23 |
import java.util.concurrent.locks.ReentrantLock; |
||||||
* @Description: |
|
||||||
*/ |
|
||||||
@Service |
/** |
||||||
public class SeCourseThumbServiceImpl extends ServiceImpl<SeCourseThumbMapper, SeCourseThumb> implements SeCourseThumbService { |
* @Author:youhang |
||||||
|
* @Date:2024-05-30-20:23 |
||||||
|
* @Description: |
||||||
@Resource |
*/ |
||||||
private SeResourceThumbService seResourceThumbService; |
@Service |
||||||
|
public class SeCourseThumbServiceImpl extends ServiceImpl<SeCourseThumbMapper, SeCourseThumb> implements SeCourseThumbService { |
||||||
@Resource |
|
||||||
SeKnowThumbService seKnowThumbService; |
|
||||||
|
@Resource |
||||||
|
private SeResourceThumbService seResourceThumbService; |
||||||
@Override |
|
||||||
public boolean doCourseThumb(String courseId, String userId) { |
@Resource |
||||||
System.out.println("进入点赞" + courseId + userId); |
SeKnowThumbService seKnowThumbService; |
||||||
// 先查询数据库记录,该用户是否点赞
|
|
||||||
SeCourseThumb seCourseThumb = new SeCourseThumb(); |
|
||||||
seCourseThumb.setCourseId(courseId); |
@Autowired |
||||||
seCourseThumb.setUserId(userId); |
CoursesMapper coursesMapper; |
||||||
QueryWrapper<SeCourseThumb> thumbQueryWrapper = new QueryWrapper<>(seCourseThumb); |
|
||||||
SeCourseThumb oldSeCourseThumb = this.getOne(thumbQueryWrapper); |
@Override |
||||||
boolean result = false; |
public BaseResponse<Boolean> doCourseThumb(String courseId, String userId) { |
||||||
//已点赞
|
|
||||||
if (oldSeCourseThumb != null) { |
//从数据库中校验是否存在courseid
|
||||||
// 取消点赞 删除记录
|
Courses courses = coursesMapper.selectById(courseId); |
||||||
result = this.remove(thumbQueryWrapper); |
boolean result = false; |
||||||
if (result) { |
if(courses == null){ |
||||||
System.out.println("取消点赞成功"); |
return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"课程不存在"); |
||||||
return result; |
} |
||||||
} else { |
|
||||||
throw new BusinessException(ErrorCode.SYSTEM_ERROR); |
// 先查询数据库记录,该用户是否点赞
|
||||||
} |
SeCourseThumb seCourseThumb = new SeCourseThumb(); |
||||||
} else { |
seCourseThumb.setCourseId(courseId); |
||||||
// 每个用户串行点赞
|
seCourseThumb.setUserId(userId); |
||||||
// 锁必须要包裹住事务方法
|
QueryWrapper<SeCourseThumb> thumbQueryWrapper = new QueryWrapper<>(seCourseThumb); |
||||||
Lock lock = new ReentrantLock(); |
SeCourseThumb oldSeCourseThumb = this.getOne(thumbQueryWrapper); |
||||||
lock.lock(); |
//已点赞
|
||||||
try { |
if (oldSeCourseThumb != null) { |
||||||
result = this.save(seCourseThumb); |
// 取消点赞 删除记录
|
||||||
} catch (Exception e) { |
result = this.remove(thumbQueryWrapper); |
||||||
throw new BusinessException(ErrorCode.OPERATION_ERROR); |
if (result) { |
||||||
} finally { |
System.out.println("取消点赞成功"); |
||||||
lock.unlock(); |
return ResultUtils.success(result); |
||||||
System.out.println("点赞成功"); |
} else { |
||||||
return result; |
throw new BusinessException(ErrorCode.SYSTEM_ERROR); |
||||||
} |
} |
||||||
} |
} else { |
||||||
} |
// 每个用户串行点赞
|
||||||
|
// 锁必须要包裹住事务方法
|
||||||
@Override |
Lock lock = new ReentrantLock(); |
||||||
public long thumbCount(String courseId) { |
lock.lock(); |
||||||
System.out.println("进入课程点赞统计" + courseId); |
try { |
||||||
QueryWrapper<SeCourseThumb> thumbQueryWrapper = new QueryWrapper<>(); |
result = this.save(seCourseThumb); |
||||||
thumbQueryWrapper.eq("course_id", courseId); |
} catch (Exception e) { |
||||||
long result = this.count(thumbQueryWrapper); |
throw new BusinessException(ErrorCode.OPERATION_ERROR); |
||||||
if (result == 0) { |
} finally { |
||||||
throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在"); |
lock.unlock(); |
||||||
} else { |
System.out.println("点赞成功"); |
||||||
return result; |
return ResultUtils.success(result); |
||||||
} |
} |
||||||
} |
} |
||||||
|
} |
||||||
@Override |
|
||||||
public long courseCount(String courseId) { |
@Override |
||||||
System.out.println("进入课程下资源和知识点的点赞统计" + courseId); |
public BaseResponse<Long> thumbCount(String courseId) { |
||||||
QueryWrapper<SeResourceThumb> ResourceQueryWrapper = new QueryWrapper<>(); |
|
||||||
ResourceQueryWrapper.eq("course_id", courseId); |
//从数据库中校验是否存在courseid
|
||||||
long result1 = seResourceThumbService.count(ResourceQueryWrapper); |
Courses courses = coursesMapper.selectById(courseId); |
||||||
QueryWrapper<SeKnowThumb> KnowQueryWrapper = new QueryWrapper<>(); |
if(courses == null){ |
||||||
KnowQueryWrapper.eq("course_id", courseId); |
return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"课程不存在"); |
||||||
long result2 = seKnowThumbService.count(KnowQueryWrapper); |
} |
||||||
long result = result1 + result2; |
|
||||||
if (result == 0) { |
QueryWrapper<SeCourseThumb> thumbQueryWrapper = new QueryWrapper<>(); |
||||||
throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在"); |
thumbQueryWrapper.eq("course_id", courseId); |
||||||
} else { |
long count = this.count(thumbQueryWrapper); |
||||||
return result; |
if (count == 0) { |
||||||
} |
throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在"); |
||||||
} |
} else { |
||||||
|
return ResultUtils.success(count); |
||||||
|
} |
||||||
} |
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public BaseResponse<Long> courseCount(String courseId) { |
||||||
|
|
||||||
|
//从数据库中校验是否存在courseid
|
||||||
|
Courses courses = coursesMapper.selectById(courseId); |
||||||
|
if(courses == null){ |
||||||
|
return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"课程不存在"); |
||||||
|
} |
||||||
|
|
||||||
|
QueryWrapper<SeResourceThumb> ResourceQueryWrapper = new QueryWrapper<>(); |
||||||
|
ResourceQueryWrapper.eq("course_id", courseId); |
||||||
|
long result1 = seResourceThumbService.count(ResourceQueryWrapper); |
||||||
|
QueryWrapper<SeKnowThumb> KnowQueryWrapper = new QueryWrapper<>(); |
||||||
|
KnowQueryWrapper.eq("course_id", courseId); |
||||||
|
long result2 = seKnowThumbService.count(KnowQueryWrapper); |
||||||
|
long result = result1 + result2; |
||||||
|
if (result == 0) { |
||||||
|
throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在"); |
||||||
|
} else { |
||||||
|
return ResultUtils.success(result); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
@ -1,63 +1,74 @@ |
|||||||
package com.teaching.backend.service.impl.thumb; |
package com.teaching.backend.service.impl.thumb; |
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
import com.teaching.backend.common.ErrorCode; |
import com.teaching.backend.common.BaseResponse; |
||||||
import com.teaching.backend.exception.BusinessException; |
import com.teaching.backend.common.ErrorCode; |
||||||
import com.teaching.backend.mapper.thumb.SeKnowThumbMapper; |
import com.teaching.backend.common.ResultUtils; |
||||||
import com.teaching.backend.model.entity.thumb.SeKnowThumb; |
import com.teaching.backend.exception.BusinessException; |
||||||
import com.teaching.backend.service.thumb.SeKnowThumbService; |
import com.teaching.backend.mapper.courses.CoursesMapper; |
||||||
import org.springframework.stereotype.Service; |
import com.teaching.backend.mapper.thumb.SeKnowThumbMapper; |
||||||
|
import com.teaching.backend.model.entity.courses.Courses; |
||||||
import java.util.concurrent.locks.Lock; |
import com.teaching.backend.model.entity.thumb.SeKnowThumb; |
||||||
import java.util.concurrent.locks.ReentrantLock; |
import com.teaching.backend.service.thumb.SeKnowThumbService; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
/** |
|
||||||
* @Author:youhang |
import java.util.concurrent.locks.Lock; |
||||||
* @Date:2024-05-30-20:23 |
import java.util.concurrent.locks.ReentrantLock; |
||||||
* @Description: |
|
||||||
*/ |
|
||||||
@Service |
/** |
||||||
public class SeKnowThumbServiceImpl extends ServiceImpl<SeKnowThumbMapper, SeKnowThumb> implements SeKnowThumbService { |
* @Author:youhang |
||||||
|
* @Date:2024-05-30-20:23 |
||||||
@Override |
* @Description: |
||||||
public boolean doKnowThumb(String courseId, String knowId, String userId) { |
*/ |
||||||
System.out.println("进入知识点点赞" + knowId + userId); |
@Service |
||||||
// 先查询数据库记录,该用户是否点赞
|
public class SeKnowThumbServiceImpl extends ServiceImpl<SeKnowThumbMapper, SeKnowThumb> implements SeKnowThumbService { |
||||||
SeKnowThumb seKnowThumb = new SeKnowThumb(); |
@Autowired |
||||||
seKnowThumb.setKnowId(knowId); |
CoursesMapper coursesMapper; |
||||||
seKnowThumb.setUserId(userId); |
@Override |
||||||
seKnowThumb.setCourseId(courseId); |
public BaseResponse<Boolean> doKnowThumb(String courseId, String knowId, String userId) { |
||||||
QueryWrapper<SeKnowThumb> thumbQueryWrapper = new QueryWrapper<>(seKnowThumb); |
// todo 查询知识点
|
||||||
SeKnowThumb oldSeKnowThumb = this.getOne(thumbQueryWrapper); |
//从数据库中校验是否存在courseid
|
||||||
boolean result = false; |
Courses courses = coursesMapper.selectById(courseId); |
||||||
//已点赞
|
boolean result = false; |
||||||
if (oldSeKnowThumb != null) { |
if(courses == null){ |
||||||
// 取消点赞 删除记录
|
return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"课程不存在"); |
||||||
result = this.remove(thumbQueryWrapper); |
} |
||||||
if (result) { |
// 先查询数据库记录,该用户是否点赞
|
||||||
System.out.println("取消点赞成功"); |
SeKnowThumb seKnowThumb = new SeKnowThumb(); |
||||||
return result; |
seKnowThumb.setKnowId(knowId); |
||||||
} else { |
seKnowThumb.setUserId(userId); |
||||||
throw new BusinessException(ErrorCode.SYSTEM_ERROR); |
seKnowThumb.setCourseId(courseId); |
||||||
} |
QueryWrapper<SeKnowThumb> thumbQueryWrapper = new QueryWrapper<>(seKnowThumb); |
||||||
} else { |
SeKnowThumb oldSeKnowThumb = this.getOne(thumbQueryWrapper); |
||||||
// 每个用户串行点赞
|
//已点赞
|
||||||
// 锁必须要包裹住事务方法
|
if (oldSeKnowThumb != null) { |
||||||
Lock lock = new ReentrantLock(); |
// 取消点赞 删除记录
|
||||||
lock.lock(); |
result = this.remove(thumbQueryWrapper); |
||||||
try { |
if (result) { |
||||||
result = this.save(seKnowThumb); |
System.out.println("取消点赞成功"); |
||||||
} catch (Exception e) { |
return ResultUtils.success(result); |
||||||
throw new BusinessException(ErrorCode.OPERATION_ERROR); |
} else { |
||||||
} finally { |
throw new BusinessException(ErrorCode.SYSTEM_ERROR); |
||||||
lock.unlock(); |
} |
||||||
System.out.println("点赞成功"); |
} else { |
||||||
return result; |
// 每个用户串行点赞
|
||||||
} |
// 锁必须要包裹住事务方法
|
||||||
} |
Lock lock = new ReentrantLock(); |
||||||
} |
lock.lock(); |
||||||
|
try { |
||||||
|
result = this.save(seKnowThumb); |
||||||
} |
} catch (Exception e) { |
||||||
|
throw new BusinessException(ErrorCode.OPERATION_ERROR); |
||||||
|
} finally { |
||||||
|
lock.unlock(); |
||||||
|
System.out.println("点赞成功"); |
||||||
|
return ResultUtils.success(result); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
@ -1,63 +1,78 @@ |
|||||||
package com.teaching.backend.service.impl.thumb; |
package com.teaching.backend.service.impl.thumb; |
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
import com.teaching.backend.common.ErrorCode; |
import com.teaching.backend.common.BaseResponse; |
||||||
import com.teaching.backend.exception.BusinessException; |
import com.teaching.backend.common.ErrorCode; |
||||||
import com.teaching.backend.mapper.thumb.SeResourceThumbMapper; |
import com.teaching.backend.common.ResultUtils; |
||||||
import com.teaching.backend.model.entity.thumb.SeResourceThumb; |
import com.teaching.backend.exception.BusinessException; |
||||||
import com.teaching.backend.service.thumb.SeResourceThumbService; |
import com.teaching.backend.mapper.courses.CoursesMapper; |
||||||
import org.springframework.stereotype.Service; |
import com.teaching.backend.mapper.thumb.SeResourceThumbMapper; |
||||||
|
import com.teaching.backend.model.entity.courses.Courses; |
||||||
import java.util.concurrent.locks.Lock; |
import com.teaching.backend.model.entity.thumb.SeResourceThumb; |
||||||
import java.util.concurrent.locks.ReentrantLock; |
import com.teaching.backend.service.thumb.SeResourceThumbService; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
/** |
|
||||||
* @Author:youhang |
import java.util.concurrent.locks.Lock; |
||||||
* @Date:2024-05-30-20:23 |
import java.util.concurrent.locks.ReentrantLock; |
||||||
* @Description: |
|
||||||
*/ |
|
||||||
@Service |
/** |
||||||
public class SeResourceThumbServiceImpl extends ServiceImpl<SeResourceThumbMapper, SeResourceThumb> implements SeResourceThumbService { |
* @Author:youhang |
||||||
|
* @Date:2024-05-30-20:23 |
||||||
@Override |
* @Description: |
||||||
public boolean doResourceThumb(String courseId, String resourceId, String userId) { |
*/ |
||||||
System.out.println("进入知识点点赞" + resourceId + userId); |
@Service |
||||||
// 先查询数据库记录,该用户是否点赞
|
public class SeResourceThumbServiceImpl extends ServiceImpl<SeResourceThumbMapper, SeResourceThumb> implements SeResourceThumbService { |
||||||
SeResourceThumb seResourceThumb = new SeResourceThumb(); |
|
||||||
seResourceThumb.setResourceId(resourceId); |
@Autowired |
||||||
seResourceThumb.setUserId(userId); |
CoursesMapper coursesMapper; |
||||||
seResourceThumb.setCourseId(courseId); |
|
||||||
QueryWrapper<SeResourceThumb> thumbQueryWrapper = new QueryWrapper<>(seResourceThumb); |
@Override |
||||||
SeResourceThumb oldSeResourceThumb = this.getOne(thumbQueryWrapper); |
public BaseResponse<Boolean> doResourceThumb(String courseId, String resourceId, String userId) { |
||||||
boolean result = false; |
|
||||||
//已点赞
|
//从数据库中校验是否存在courseid
|
||||||
if (oldSeResourceThumb != null) { |
Courses courses = coursesMapper.selectById(courseId); |
||||||
// 取消点赞 删除记录
|
boolean result = false; |
||||||
result = this.remove(thumbQueryWrapper); |
if(courses == null){ |
||||||
if (result) { |
return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"课程不存在"); |
||||||
System.out.println("取消点赞成功"); |
} |
||||||
return result; |
|
||||||
} else { |
// 先查询数据库记录,该用户是否点赞
|
||||||
throw new BusinessException(ErrorCode.SYSTEM_ERROR); |
SeResourceThumb seResourceThumb = new SeResourceThumb(); |
||||||
} |
seResourceThumb.setResourceId(resourceId); |
||||||
} else { |
seResourceThumb.setUserId(userId); |
||||||
// 每个用户串行点赞
|
seResourceThumb.setCourseId(courseId); |
||||||
// 锁必须要包裹住事务方法
|
QueryWrapper<SeResourceThumb> thumbQueryWrapper = new QueryWrapper<>(seResourceThumb); |
||||||
Lock lock = new ReentrantLock(); |
SeResourceThumb oldSeResourceThumb = this.getOne(thumbQueryWrapper); |
||||||
lock.lock(); |
|
||||||
try { |
//已点赞
|
||||||
result = this.save(seResourceThumb); |
if (oldSeResourceThumb != null) { |
||||||
} catch (Exception e) { |
// 取消点赞 删除记录
|
||||||
throw new BusinessException(ErrorCode.OPERATION_ERROR); |
result = this.remove(thumbQueryWrapper); |
||||||
} finally { |
if (result) { |
||||||
lock.unlock(); |
System.out.println("取消点赞成功"); |
||||||
System.out.println("点赞成功"); |
return ResultUtils.success(result); |
||||||
return result; |
} else { |
||||||
} |
throw new BusinessException(ErrorCode.SYSTEM_ERROR); |
||||||
} |
} |
||||||
} |
} else { |
||||||
|
// 每个用户串行点赞
|
||||||
|
// 锁必须要包裹住事务方法
|
||||||
} |
Lock lock = new ReentrantLock(); |
||||||
|
lock.lock(); |
||||||
|
try { |
||||||
|
result = this.save(seResourceThumb); |
||||||
|
} catch (Exception e) { |
||||||
|
throw new BusinessException(ErrorCode.OPERATION_ERROR); |
||||||
|
} finally { |
||||||
|
lock.unlock(); |
||||||
|
System.out.println("点赞成功"); |
||||||
|
return ResultUtils.success(result); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
@ -1,40 +1,41 @@ |
|||||||
package com.teaching.backend.service.thumb; |
package com.teaching.backend.service.thumb; |
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService; |
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
import com.teaching.backend.model.entity.thumb.SeCourseThumb; |
import com.teaching.backend.common.BaseResponse; |
||||||
|
import com.teaching.backend.model.entity.thumb.SeCourseThumb; |
||||||
/** |
|
||||||
* @Author:youhang |
/** |
||||||
* @Date:2024-05-30-20:22 |
* @Author:youhang |
||||||
* @Description: |
* @Date:2024-05-30-20:22 |
||||||
*/ |
* @Description: |
||||||
public interface SeCourseThumbService extends IService<SeCourseThumb> { |
*/ |
||||||
|
public interface SeCourseThumbService extends IService<SeCourseThumb> { |
||||||
/** |
|
||||||
* 点赞 |
/** |
||||||
* |
* 点赞 |
||||||
* @param courseId |
* |
||||||
* @param userId |
* @param courseId |
||||||
* @return |
* @param userId |
||||||
*/ |
* @return |
||||||
boolean doCourseThumb(String courseId, String userId); |
*/ |
||||||
|
BaseResponse<Boolean> doCourseThumb(String courseId, String userId); |
||||||
|
|
||||||
/** |
|
||||||
* 点赞总数 |
/** |
||||||
* |
* 点赞总数 |
||||||
* @param courseId |
* |
||||||
* @return |
* @param courseId |
||||||
*/ |
* @return |
||||||
long thumbCount(String courseId); |
*/ |
||||||
|
BaseResponse<Long> thumbCount(String courseId); |
||||||
|
|
||||||
/** |
|
||||||
* 课程下资源和知识点的点赞总数 |
/** |
||||||
* |
* 课程下资源和知识点的点赞总数 |
||||||
* @param courseId |
* |
||||||
* @return |
* @param courseId |
||||||
*/ |
* @return |
||||||
long courseCount(String courseId); |
*/ |
||||||
|
BaseResponse<Long> courseCount(String courseId); |
||||||
} |
|
||||||
|
} |
||||||
|
@ -1,22 +1,23 @@ |
|||||||
package com.teaching.backend.service.thumb; |
package com.teaching.backend.service.thumb; |
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService; |
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
import com.teaching.backend.model.entity.thumb.SeKnowThumb; |
import com.teaching.backend.common.BaseResponse; |
||||||
|
import com.teaching.backend.model.entity.thumb.SeKnowThumb; |
||||||
/** |
|
||||||
* @Author:youhang |
/** |
||||||
* @Date:2024-05-30-20:22 |
* @Author:youhang |
||||||
* @Description: |
* @Date:2024-05-30-20:22 |
||||||
*/ |
* @Description: |
||||||
public interface SeKnowThumbService extends IService<SeKnowThumb> { |
*/ |
||||||
|
public interface SeKnowThumbService extends IService<SeKnowThumb> { |
||||||
/** |
|
||||||
* 点赞 |
/** |
||||||
* |
* 点赞 |
||||||
* @param courseId |
* |
||||||
* @param userId |
* @param courseId |
||||||
* @return |
* @param userId |
||||||
*/ |
* @return |
||||||
boolean doKnowThumb(String courseId, String resourceId, String userId); |
*/ |
||||||
|
BaseResponse<Boolean> doKnowThumb(String courseId, String resourceId, String userId); |
||||||
} |
|
||||||
|
} |
||||||
|
@ -1,22 +1,23 @@ |
|||||||
package com.teaching.backend.service.thumb; |
package com.teaching.backend.service.thumb; |
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService; |
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
import com.teaching.backend.model.entity.thumb.SeResourceThumb; |
import com.teaching.backend.common.BaseResponse; |
||||||
|
import com.teaching.backend.model.entity.thumb.SeResourceThumb; |
||||||
/** |
|
||||||
* @Author:youhang |
/** |
||||||
* @Date:2024-05-30-20:22 |
* @Author:youhang |
||||||
* @Description: |
* @Date:2024-05-30-20:22 |
||||||
*/ |
* @Description: |
||||||
public interface SeResourceThumbService extends IService<SeResourceThumb> { |
*/ |
||||||
|
public interface SeResourceThumbService extends IService<SeResourceThumb> { |
||||||
/** |
|
||||||
* 点赞 |
/** |
||||||
* |
* 点赞 |
||||||
* @param courseId |
* |
||||||
* @param userId |
* @param courseId |
||||||
* @return |
* @param userId |
||||||
*/ |
* @return |
||||||
boolean doResourceThumb(String courseId, String resourceId, String userId); |
*/ |
||||||
|
BaseResponse<Boolean> doResourceThumb(String courseId, String resourceId, String userId); |
||||||
} |
|
||||||
|
} |
||||||
|
Loading…
Reference in new issue