|
|
|
@ -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, "课程不存在"); |
|
|
|
|
} |
|
|
|
|
//查询数据库记录,该用户是否点赞
|
|
|
|
|
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); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|