合并所有表 4.0 -yhhs

master
youahng 9 months ago
parent 1cd1d906bf
commit a0a8fa1ca7
  1. 251
      src/main/java/com/teaching/backend/controller/favour/SeCourseFavourController.java
  2. 97
      src/main/java/com/teaching/backend/controller/favour/SeKnowFavourController.java
  3. 99
      src/main/java/com/teaching/backend/controller/favour/SeResourceFavourController.java
  4. 170
      src/main/java/com/teaching/backend/controller/thumb/SeCourseThumbController.java
  5. 96
      src/main/java/com/teaching/backend/controller/thumb/SeKnowThumbController.java
  6. 96
      src/main/java/com/teaching/backend/controller/thumb/SeResourceThumbController.java
  7. 134
      src/main/java/com/teaching/backend/service/favour/SeCourseFavourService.java
  8. 45
      src/main/java/com/teaching/backend/service/favour/SeKnowFavourService.java
  9. 45
      src/main/java/com/teaching/backend/service/favour/SeResourceFavourService.java
  10. 327
      src/main/java/com/teaching/backend/service/impl/favour/SeCourseFavourServiceImpl.java
  11. 141
      src/main/java/com/teaching/backend/service/impl/favour/SeKnowFavourServiceImpl.java
  12. 145
      src/main/java/com/teaching/backend/service/impl/favour/SeResourceFavourServiceImpl.java
  13. 236
      src/main/java/com/teaching/backend/service/impl/thumb/SeCourseThumbServiceImpl.java
  14. 137
      src/main/java/com/teaching/backend/service/impl/thumb/SeKnowThumbServiceImpl.java
  15. 141
      src/main/java/com/teaching/backend/service/impl/thumb/SeResourceThumbServiceImpl.java
  16. 81
      src/main/java/com/teaching/backend/service/thumb/SeCourseThumbService.java
  17. 45
      src/main/java/com/teaching/backend/service/thumb/SeKnowThumbService.java
  18. 45
      src/main/java/com/teaching/backend/service/thumb/SeResourceThumbService.java
  19. 6
      src/main/resources/application.yml

@ -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);
}
}

@ -8,7 +8,7 @@ spring:
matching-strategy: ant_path_matcher matching-strategy: ant_path_matcher
datasource: datasource:
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/teaching_db url: jdbc:mysql://39.106.16.162:3306/teaching_db
username: root username: root
password: root password: root
mybatis: mybatis:
@ -40,8 +40,8 @@ knife4j:
secure: secure:
ignored: ignored:
urls: #安全路径白名单 urls: #安全路径白名单
#- /swagger-ui/ - /**
- /** # - /swagger-ui/
# - /swagger-resources/** # - /swagger-resources/**
# - /**/v2/api-docs # - /**/v2/api-docs
# - /**/*.html # - /**/*.html

Loading…
Cancel
Save