diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiUserStartAppController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiUserStartAppController.java index 3b5d3ba2..285a9229 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiUserStartAppController.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiUserStartAppController.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.cai.dto.app.query.StarQuery; import com.ruoyi.cai.dto.app.query.StarOrVisitorRes; import com.ruoyi.cai.dto.app.vo.UserStarOrVisitorList; +import com.ruoyi.cai.service.CaiUserCountService; import com.ruoyi.cai.service.CaiUserFollowService; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.R; diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiUserCount.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiUserCount.java index 2064f665..3a3bcb66 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiUserCount.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiUserCount.java @@ -1,5 +1,6 @@ package com.ruoyi.cai.domain; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -22,36 +23,40 @@ public class CaiUserCount implements Serializable { /** * 用户ID */ - @TableId(value = "user_id") - private Integer userId; + @TableId(value = "user_id",type = IdType.INPUT) + private Long userId; /** * 粉丝总数 */ - private Integer fansCount; + private Long fansCount; /** * 关注数 */ - private Integer followCount; + private Long followCount; + /** + * 足迹数 + */ + private Long footCount; /** * 访客数 */ - private Integer visitorCount; + private Long visitorCount; /** * 相册数量 */ - private Integer photoCount; + private Long photoCount; /** * 发帖数量 */ - private Integer dynamicCount; + private Long dynamicCount; /** * 收到的礼物数量 */ - private Integer receiveGiftCount; + private Long receiveGiftCount; /** * 送礼总数量 */ - private Integer giveGiftCount; + private Long giveGiftCount; private LocalDateTime createTime; diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiUserCountMapper.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiUserCountMapper.java index fcf8cc57..3aa38126 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiUserCountMapper.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiUserCountMapper.java @@ -2,6 +2,7 @@ package com.ruoyi.cai.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.cai.domain.CaiUserCount; +import org.apache.ibatis.annotations.Param; /** * 用户信息数量统计Mapper接口 @@ -11,4 +12,7 @@ import com.ruoyi.cai.domain.CaiUserCount; */ public interface CaiUserCountMapper extends BaseMapper { + void starIncs(@Param("userId") Long userId, @Param("fansIncs") int fansIncs, @Param("followIncs") int followIncs); + + void visitorIncs(@Param("userId") Long userId, @Param("footIncs") int footIncs, @Param("visitorIncs") int visitorIncs); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiUserGiftMapper.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiUserGiftMapper.java index 985de2c1..d78fab5c 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiUserGiftMapper.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiUserGiftMapper.java @@ -16,4 +16,6 @@ import java.util.List; public interface CaiUserGiftMapper extends BaseMapper { List selectGiftList(@Param("userId") Long userId); + + long countGiftNum(@Param("fromUid") Long fromUid, @Param("toUid") Long toUid); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiUserCountService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiUserCountService.java index 8fbb767b..fecfbefc 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiUserCountService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiUserCountService.java @@ -10,5 +10,9 @@ import com.ruoyi.cai.domain.CaiUserCount; * @date 2023-12-24 */ public interface CaiUserCountService extends IService { - + void star(Long fromUserId,Long toUserId); + void unStar(Long fromUserId,Long toUserId); + void visitor(Long fromUserId,Long toUserId); + void reset(Long userId); + void resetAsync(Long userId); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiUserCountServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiUserCountServiceImpl.java index 6efd3ce6..3f5135f6 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiUserCountServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiUserCountServiceImpl.java @@ -1,12 +1,18 @@ package com.ruoyi.cai.service.impl; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.cai.domain.CaiUserCount; +import com.ruoyi.cai.domain.*; +import com.ruoyi.cai.executor.ExecutorConstant; import com.ruoyi.cai.mapper.CaiUserCountMapper; -import com.ruoyi.cai.service.CaiUserCountService; +import com.ruoyi.cai.mapper.CaiUserGiftMapper; +import com.ruoyi.cai.service.*; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; + /** * 用户信息数量统计Service业务层处理 * @@ -17,4 +23,68 @@ import org.springframework.stereotype.Service; @Service public class CaiUserCountServiceImpl extends ServiceImpl implements CaiUserCountService { + @Autowired + private CaiUserVisitorService userVisitorService; + @Autowired + private CaiUserFollowService userFollowService; + @Autowired + private CaiUserGiftService userGiftService; + @Resource + private CaiUserGiftMapper userGiftMapper; + @Autowired + private CaiUserAlbumService userAlbumService; + + @Override + public void star(Long fromUserId, Long toUserId) { + baseMapper.starIncs(fromUserId,0,1); + baseMapper.starIncs(toUserId,1,0); + } + + @Override + public void unStar(Long fromUserId, Long toUserId) { + baseMapper.starIncs(fromUserId,0,-1); + baseMapper.starIncs(toUserId,-1,0); + } + + @Override + public void visitor(Long fromUserId, Long toUserId) { + baseMapper.visitorIncs(fromUserId,1,0); + baseMapper.visitorIncs(toUserId,0,-1); + } + + @Override + public void reset(Long userId) { + // 粉丝总数 + long fans = userFollowService.count(Wrappers.lambdaQuery(CaiUserFollow.class).eq(CaiUserFollow::getFollowUser, userId)); + // 关注数 + long follow = userFollowService.count(Wrappers.lambdaQuery(CaiUserFollow.class).eq(CaiUserFollow::getUserId, userId)); + // 足迹数 + long foot = userVisitorService.count(Wrappers.lambdaQuery(CaiUserVisitor.class).eq(CaiUserVisitor::getVisitorId, userId)); + // 访客数 + long visitor = userVisitorService.count(Wrappers.lambdaQuery(CaiUserVisitor.class).eq(CaiUserVisitor::getUserId, userId)); + // 相册数量(包含待审核中) + long photo = userAlbumService.count(Wrappers.lambdaQuery(CaiUserAlbum.class).eq(CaiUserAlbum::getUserId, userId) + .ne(CaiUserAlbum::getStatus, 2)); + // 收到的礼物数量 + long receiveGiftCount = userGiftMapper.countGiftNum(null,userId); + // 送出的礼物数量 + long giveGiftCount = userGiftMapper.countGiftNum(userId,null); + CaiUserCount update = new CaiUserCount(); + update.setUserId(userId); + update.setFansCount(fans); + update.setFollowCount(follow); + update.setFootCount(foot); + update.setVisitorCount(visitor); + update.setPhotoCount(photo); + // TODO + update.setDynamicCount(0L); + update.setReceiveGiftCount(receiveGiftCount); + update.setGiveGiftCount(giveGiftCount); + this.updateById(update); + } + + @Override + public void resetAsync(Long userId) { + ExecutorConstant.SYNC_EXECUTOR.execute(() -> reset(userId)); + } } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiUserFollowServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiUserFollowServiceImpl.java index fe7e8799..6289c053 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiUserFollowServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiUserFollowServiceImpl.java @@ -8,11 +8,14 @@ import com.ruoyi.cai.dto.app.query.StarQuery; import com.ruoyi.cai.dto.app.query.StarOrVisitorRes; import com.ruoyi.cai.dto.app.vo.UserStarOrVisitorList; import com.ruoyi.cai.mapper.CaiUserFollowMapper; +import com.ruoyi.cai.service.CaiUserCountService; import com.ruoyi.cai.service.CaiUserFollowService; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.helper.LoginHelper; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 关注表Service业务层处理 @@ -24,7 +27,8 @@ import org.springframework.stereotype.Service; @Service public class CaiUserFollowServiceImpl extends ServiceImpl implements CaiUserFollowService { - + @Autowired + private CaiUserCountService userCountService; @Override public Long getFansNumByUserId(Long userId){ return this.count(Wrappers.lambdaQuery(CaiUserFollow.class) @@ -43,6 +47,7 @@ public class CaiUserFollowServiceImpl extends ServiceImpl implements CaiUserVisitorService { + @Autowired + private CaiUserCountService userCountService; @Override public boolean visitor(StarOrVisitorRes starOrVisitorRes) { Long fromUserId = LoginHelper.getUserId(); @@ -41,6 +45,7 @@ public class CaiUserVisitorServiceImpl extends ServiceImpl - - + + update cai_user_count + set + foot_count = foot_count + #{footIncs}, + visitor_count = visitor_count + #{visitorIncs} + where user_id = #{userId} + + diff --git a/ruoyi-cai/src/main/resources/mapper/cai/CaiUserGiftMapper.xml b/ruoyi-cai/src/main/resources/mapper/cai/CaiUserGiftMapper.xml index 001c3c85..0461f7c1 100644 --- a/ruoyi-cai/src/main/resources/mapper/cai/CaiUserGiftMapper.xml +++ b/ruoyi-cai/src/main/resources/mapper/cai/CaiUserGiftMapper.xml @@ -20,6 +20,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where to_uid = #{userId} group by gift_id +