From 8c6fb56c3fc4bd7d80e51d8b7b272895b9e0b2dc Mon Sep 17 00:00:00 2001 From: khy <2908249413@qq.com> Date: Fri, 6 Jun 2025 17:18:29 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=8D=E8=8D=89=E7=82=B9=E8=B5=9E=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/circle/AppCircleController.java | 2 +- .../dataobject/circlelike/CircleLikeDO.java | 37 +++++++++++++ .../mysql/circlelike/CircleLikeMapper.java | 19 +++++++ .../service/circle/CircleService.java | 4 +- .../service/circle/CircleServiceImpl.java | 22 ++++++-- .../service/circlelike/CircleLikeService.java | 24 +++++++++ .../circlelike/CircleLikeServiceImpl.java | 52 +++++++++++++++++++ 7 files changed, 154 insertions(+), 6 deletions(-) create mode 100644 yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/circlelike/CircleLikeDO.java create mode 100644 yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/circlelike/CircleLikeMapper.java create mode 100644 yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/circlelike/CircleLikeService.java create mode 100644 yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/circlelike/CircleLikeServiceImpl.java diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/circle/AppCircleController.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/circle/AppCircleController.java index e41cf63..2549c62 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/circle/AppCircleController.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/circle/AppCircleController.java @@ -112,7 +112,7 @@ public class AppCircleController { @Operation(summary = "点赞/取消点赞") @PreAuthenticated public CommonResult doLike(@RequestParam("id") Long lookId){ - circleService.updateLikeCount(lookId); + circleService.updateLikeCount(lookId,getLoginUserId()); return success(true); } diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/circlelike/CircleLikeDO.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/circlelike/CircleLikeDO.java new file mode 100644 index 0000000..dacc29d --- /dev/null +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/circlelike/CircleLikeDO.java @@ -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") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 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; +} diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/circlelike/CircleLikeMapper.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/circlelike/CircleLikeMapper.java new file mode 100644 index 0000000..9c504e3 --- /dev/null +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/circlelike/CircleLikeMapper.java @@ -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 { + +} diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/circle/CircleService.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/circle/CircleService.java index 16bb754..cff5548 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/circle/CircleService.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/circle/CircleService.java @@ -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 getCirclePage(CirclePageReqVO pageReqVO); -} \ No newline at end of file +} diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/circle/CircleServiceImpl.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/circle/CircleServiceImpl.java index 06f2686..6d66f99 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/circle/CircleServiceImpl.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/circle/CircleServiceImpl.java @@ -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); } -} \ No newline at end of file +} diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/circlelike/CircleLikeService.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/circlelike/CircleLikeService.java new file mode 100644 index 0000000..9689fbf --- /dev/null +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/circlelike/CircleLikeService.java @@ -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); +} diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/circlelike/CircleLikeServiceImpl.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/circlelike/CircleLikeServiceImpl.java new file mode 100644 index 0000000..e97e28c --- /dev/null +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/circlelike/CircleLikeServiceImpl.java @@ -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() + .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); + } +}