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

Loading…
Cancel
Save