master
小萌新 2 months ago
parent 79660db3fc
commit 6a95766592
  1. 6
      src/main/java/com/teaching/backend/model/entity/favour/SeCourseFavour.java
  2. 60
      src/main/java/com/teaching/backend/service/impl/favour/SeCourseFavourServiceImpl.java

@ -31,12 +31,6 @@ public class SeCourseFavour implements Serializable {
*/
private String userId;
/**
* 创建用户 id
*/
private DateTime createtime;
@TableField(exist = false)
private static final long serialVersionUID = 1L;

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -66,40 +67,41 @@ public class SeCourseFavourServiceImpl extends ServiceImpl<SeCourseFavourMapper,
System.out.println("进入点赞" + courseId + userId);
//从数据库中校验是否存在courseid
Courses courses = coursesMapper.selectById(courseId);
boolean result = false;
if(courses == null){
return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"课程不存在");
if (courses == null) {
return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR, "课程不存在");
}
//查询数据库记录,该用户是否点赞
SeCourseFavour seCourseFavour = new SeCourseFavour();
seCourseFavour.setCourseId(courseId);
seCourseFavour.setUserId(userId);
seCourseFavour.setCreatetime(DateTime.now());
QueryWrapper<SeCourseFavour> favourQueryWrapper = new QueryWrapper<>(seCourseFavour);
SeCourseFavour oldSeCourseFavour = this.getOne(favourQueryWrapper);
LambdaQueryWrapper<SeCourseFavour> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(SeCourseFavour::getCourseId, courseId)
.eq(SeCourseFavour::getUserId, userId);
SeCourseFavour oldSeCourseFavour = seCourseFavourMapper.selectOne(lambdaQueryWrapper);
System.out.println("查询条件: courseId=" + courseId + ", userId=" + userId);
System.out.println("查询结果: " + oldSeCourseFavour);
//已点赞
if (oldSeCourseFavour != null) {
// 取消点赞 删除记录
result = this.remove(favourQueryWrapper);
if (result) {
System.out.println("取消点赞成功");
return ResultUtils.success(result);
if (oldSeCourseFavour == null) {
// 如果没有记录,则添加收藏
SeCourseFavour newSeCourseFavour = new SeCourseFavour();
newSeCourseFavour.setCourseId(courseId);
newSeCourseFavour.setUserId(userId);
int insertResult = seCourseFavourMapper.insert(newSeCourseFavour);
if (insertResult > 0) {
return ResultUtils.success(true);
} else {
throw new BusinessException(ErrorCode.SYSTEM_ERROR);
return ResultUtils.error(ErrorCode.OPERATION_ERROR);
}
} else {
// 每个用户串行点赞
// 锁必须要包裹住事务方法
Lock lock = new ReentrantLock();
lock.lock();
try {
result = this.save(seCourseFavour);
} catch (Exception e) {
throw new BusinessException(ErrorCode.OPERATION_ERROR);
} finally {
lock.unlock();
System.out.println("点赞成功");
return ResultUtils.success(result);
// 如果有记录,则删除记录,也就是取消收藏
int deleteResult = seCourseFavourMapper.delete(lambdaQueryWrapper);
if (deleteResult > 0) {
return ResultUtils.success(false);
} else {
return ResultUtils.error(ErrorCode.OPERATION_ERROR);
}
}
}

Loading…
Cancel
Save