种草点赞修复

This commit is contained in:
khy 2025-06-06 17:18:29 +08:00
parent 9570d4dad2
commit 8c6fb56c3f
7 changed files with 154 additions and 6 deletions

View File

@ -112,7 +112,7 @@ public class AppCircleController {
@Operation(summary = "点赞/取消点赞")
@PreAuthenticated
public CommonResult<Boolean> doLike(@RequestParam("id") Long lookId){
circleService.updateLikeCount(lookId);
circleService.updateLikeCount(lookId,getLoginUserId());
return success(true);
}

View File

@ -0,0 +1,37 @@
package cn.iocoder.yudao.module.promotion.dal.dataobject.circlelike;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
/**
* 商城动态 DO
*
* @author 管理员
*/
@TableName("promotion_circle_like")
@KeySequence("promotion_circle_like_seq") // 用于 OraclePostgreSQLKingbaseDB2H2 数据库的主键自增如果是 MySQL 等数据库可不写
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CircleLikeDO extends BaseDO {
/**
* 编号
*/
@TableId
private Long id;
/**
* 用户编号
*/
private Long userId;
/**
* 种草id
*/
private Long circleId;
}

View File

@ -0,0 +1,19 @@
package cn.iocoder.yudao.module.promotion.dal.mysql.circlelike;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.promotion.controller.admin.circle.vo.CirclePageReqVO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.circle.CircleDO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.circlelike.CircleLikeDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 商城动态 Mapper
*
* @author 管理员
*/
@Mapper
public interface CircleLikeMapper extends BaseMapperX<CircleLikeDO> {
}

View File

@ -33,7 +33,7 @@ public interface CircleService {
void addLookCount(Long circleId);
//点赞/取消点赞
void updateLikeCount(Long circleId);
void updateLikeCount(Long circleId,Long userId);
/**
* 删除商城动态
@ -58,4 +58,4 @@ public interface CircleService {
*/
PageResult<CircleDO> getCirclePage(CirclePageReqVO pageReqVO);
}
}

View File

@ -1,5 +1,7 @@
package cn.iocoder.yudao.module.promotion.service.circle;
import cn.iocoder.yudao.module.promotion.dal.dataobject.circlelike.CircleLikeDO;
import cn.iocoder.yudao.module.promotion.service.circlelike.CircleLikeService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -29,6 +31,9 @@ public class CircleServiceImpl implements CircleService {
@Resource
private CircleMapper circleMapper;
@Resource
private CircleLikeService circleLikeService;
@Override
public Long createCircle(CircleSaveReqVO createReqVO) {
// 插入
@ -55,9 +60,20 @@ public class CircleServiceImpl implements CircleService {
}
@Override
public void updateLikeCount(Long circleId) {
public void updateLikeCount(Long circleId,Long userId) {
CircleDO circleDO = circleMapper.selectOne("id", circleId);
circleDO.setLookCount(circleDO.getLikeCount() + 1);
CircleLikeDO circleLikeDO = circleLikeService.getCircleLike(circleId,userId);
if (circleLikeDO != null){
circleLikeService.deleteCircleLike(circleLikeDO.getId());
circleDO.setLikeCount(circleDO.getLikeCount() - 1);
}
else {
circleDO.setLikeCount(circleDO.getLikeCount() + 1);
circleLikeDO = new CircleLikeDO();
circleLikeDO.setCircleId(circleId);
circleLikeDO.setUserId(userId);
circleLikeService.createCircleLike(circleLikeDO);
}
circleMapper.updateById(circleDO);
}
@ -85,4 +101,4 @@ public class CircleServiceImpl implements CircleService {
return circleMapper.selectPage(pageReqVO);
}
}
}

View File

@ -0,0 +1,24 @@
package cn.iocoder.yudao.module.promotion.service.circlelike;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.promotion.controller.admin.circle.vo.CirclePageReqVO;
import cn.iocoder.yudao.module.promotion.controller.admin.circle.vo.CircleSaveReqVO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.circle.CircleDO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.circlelike.CircleLikeDO;
import javax.validation.Valid;
/**
* 商城动态 Service 接口
*
* @author 管理员
*/
public interface CircleLikeService {
CircleLikeDO getCircleLike(Long circleId, Long userId);
void deleteCircleLike(Long id);
void createCircleLike(CircleLikeDO circleLikeDO);
}

View File

@ -0,0 +1,52 @@
package cn.iocoder.yudao.module.promotion.service.circlelike;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.module.promotion.controller.admin.circle.vo.CirclePageReqVO;
import cn.iocoder.yudao.module.promotion.controller.admin.circle.vo.CircleSaveReqVO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.circle.CircleDO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.circlelike.CircleLikeDO;
import cn.iocoder.yudao.module.promotion.dal.mysql.circle.CircleMapper;
import cn.iocoder.yudao.module.promotion.dal.mysql.circlelike.CircleLikeMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.CIRCLE_NOT_EXISTS;
/**
* 商城动态 Service 实现类
*
* @author 管理员
*/
@Service
@Validated
public class CircleLikeServiceImpl implements CircleLikeService {
@Resource
private CircleLikeMapper circleLikeMapper;
@Override
public CircleLikeDO getCircleLike(Long circleId, Long userId) {
CircleLikeDO circleLikeDO = circleLikeMapper.selectOne(new LambdaQueryWrapper<CircleLikeDO>()
.eq(CircleLikeDO::getCircleId,circleId)
.eq(CircleLikeDO::getUserId,userId)
.eq(BaseDO::getDeleted,false));
return circleLikeDO;
}
@Override
public void deleteCircleLike(Long id) {
circleLikeMapper.deleteById(id);
}
@Override
public void createCircleLike(CircleLikeDO circleLikeDO) {
circleLikeMapper.insert(circleLikeDO);
}
}