This commit is contained in:
dute7liang
2023-12-24 00:58:47 +08:00
parent cc467a1105
commit c083cb9763
10 changed files with 137 additions and 15 deletions

View File

@@ -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.StarQuery;
import com.ruoyi.cai.dto.app.query.StarOrVisitorRes; import com.ruoyi.cai.dto.app.query.StarOrVisitorRes;
import com.ruoyi.cai.dto.app.vo.UserStarOrVisitorList; import com.ruoyi.cai.dto.app.vo.UserStarOrVisitorList;
import com.ruoyi.cai.service.CaiUserCountService;
import com.ruoyi.cai.service.CaiUserFollowService; import com.ruoyi.cai.service.CaiUserFollowService;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;

View File

@@ -1,5 +1,6 @@
package com.ruoyi.cai.domain; package com.ruoyi.cai.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
@@ -22,36 +23,40 @@ public class CaiUserCount implements Serializable {
/** /**
* 用户ID * 用户ID
*/ */
@TableId(value = "user_id") @TableId(value = "user_id",type = IdType.INPUT)
private Integer userId; 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; private LocalDateTime createTime;

View File

@@ -2,6 +2,7 @@ package com.ruoyi.cai.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cai.domain.CaiUserCount; import com.ruoyi.cai.domain.CaiUserCount;
import org.apache.ibatis.annotations.Param;
/** /**
* 用户信息数量统计Mapper接口 * 用户信息数量统计Mapper接口
@@ -11,4 +12,7 @@ import com.ruoyi.cai.domain.CaiUserCount;
*/ */
public interface CaiUserCountMapper extends BaseMapper<CaiUserCount> { public interface CaiUserCountMapper extends BaseMapper<CaiUserCount> {
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);
} }

View File

@@ -16,4 +16,6 @@ import java.util.List;
public interface CaiUserGiftMapper extends BaseMapper<CaiUserGift> { public interface CaiUserGiftMapper extends BaseMapper<CaiUserGift> {
List<UserGiftVo> selectGiftList(@Param("userId") Long userId); List<UserGiftVo> selectGiftList(@Param("userId") Long userId);
long countGiftNum(@Param("fromUid") Long fromUid, @Param("toUid") Long toUid);
} }

View File

@@ -10,5 +10,9 @@ import com.ruoyi.cai.domain.CaiUserCount;
* @date 2023-12-24 * @date 2023-12-24
*/ */
public interface CaiUserCountService extends IService<CaiUserCount> { public interface CaiUserCountService extends IService<CaiUserCount> {
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);
} }

View File

@@ -1,12 +1,18 @@
package com.ruoyi.cai.service.impl; package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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.mapper.CaiUserCountMapper;
import com.ruoyi.cai.service.CaiUserCountService; import com.ruoyi.cai.mapper.CaiUserGiftMapper;
import com.ruoyi.cai.service.*;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/** /**
* 用户信息数量统计Service业务层处理 * 用户信息数量统计Service业务层处理
* *
@@ -17,4 +23,68 @@ import org.springframework.stereotype.Service;
@Service @Service
public class CaiUserCountServiceImpl extends ServiceImpl<CaiUserCountMapper,CaiUserCount> implements CaiUserCountService { public class CaiUserCountServiceImpl extends ServiceImpl<CaiUserCountMapper,CaiUserCount> 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));
}
} }

View File

@@ -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.query.StarOrVisitorRes;
import com.ruoyi.cai.dto.app.vo.UserStarOrVisitorList; import com.ruoyi.cai.dto.app.vo.UserStarOrVisitorList;
import com.ruoyi.cai.mapper.CaiUserFollowMapper; import com.ruoyi.cai.mapper.CaiUserFollowMapper;
import com.ruoyi.cai.service.CaiUserCountService;
import com.ruoyi.cai.service.CaiUserFollowService; import com.ruoyi.cai.service.CaiUserFollowService;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.helper.LoginHelper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/** /**
* 关注表Service业务层处理 * 关注表Service业务层处理
@@ -24,7 +27,8 @@ import org.springframework.stereotype.Service;
@Service @Service
public class CaiUserFollowServiceImpl extends ServiceImpl<CaiUserFollowMapper,CaiUserFollow> implements CaiUserFollowService { public class CaiUserFollowServiceImpl extends ServiceImpl<CaiUserFollowMapper,CaiUserFollow> implements CaiUserFollowService {
@Autowired
private CaiUserCountService userCountService;
@Override @Override
public Long getFansNumByUserId(Long userId){ public Long getFansNumByUserId(Long userId){
return this.count(Wrappers.lambdaQuery(CaiUserFollow.class) return this.count(Wrappers.lambdaQuery(CaiUserFollow.class)
@@ -43,6 +47,7 @@ public class CaiUserFollowServiceImpl extends ServiceImpl<CaiUserFollowMapper,Ca
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public boolean star(StarOrVisitorRes starOrVisitorRes) { public boolean star(StarOrVisitorRes starOrVisitorRes) {
Long fromUserId = LoginHelper.getUserId(); Long fromUserId = LoginHelper.getUserId();
this.remove(Wrappers.lambdaQuery(CaiUserFollow.class) this.remove(Wrappers.lambdaQuery(CaiUserFollow.class)
@@ -52,6 +57,7 @@ public class CaiUserFollowServiceImpl extends ServiceImpl<CaiUserFollowMapper,Ca
userFollow.setUserId(fromUserId); userFollow.setUserId(fromUserId);
userFollow.setFollowUser(starOrVisitorRes.getToUserId()); userFollow.setFollowUser(starOrVisitorRes.getToUserId());
this.save(userFollow); this.save(userFollow);
userCountService.star(fromUserId,starOrVisitorRes.getToUserId());
return true; return true;
} }
@@ -61,6 +67,7 @@ public class CaiUserFollowServiceImpl extends ServiceImpl<CaiUserFollowMapper,Ca
this.remove(Wrappers.lambdaQuery(CaiUserFollow.class) this.remove(Wrappers.lambdaQuery(CaiUserFollow.class)
.eq(CaiUserFollow::getUserId,fromUserId) .eq(CaiUserFollow::getUserId,fromUserId)
.eq(CaiUserFollow::getFollowUser, starOrVisitorRes.getToUserId())); .eq(CaiUserFollow::getFollowUser, starOrVisitorRes.getToUserId()));
userCountService.star(fromUserId,starOrVisitorRes.getToUserId());
return true; return true;
} }

View File

@@ -9,10 +9,12 @@ import com.ruoyi.cai.dto.app.query.StarOrVisitorRes;
import com.ruoyi.cai.dto.app.query.VisitorQuery; import com.ruoyi.cai.dto.app.query.VisitorQuery;
import com.ruoyi.cai.dto.app.vo.UserStarOrVisitorList; import com.ruoyi.cai.dto.app.vo.UserStarOrVisitorList;
import com.ruoyi.cai.mapper.CaiUserVisitorMapper; import com.ruoyi.cai.mapper.CaiUserVisitorMapper;
import com.ruoyi.cai.service.CaiUserCountService;
import com.ruoyi.cai.service.CaiUserVisitorService; import com.ruoyi.cai.service.CaiUserVisitorService;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.helper.LoginHelper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@@ -27,6 +29,8 @@ import java.util.List;
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
public class CaiUserVisitorServiceImpl extends ServiceImpl<CaiUserVisitorMapper,CaiUserVisitor> implements CaiUserVisitorService { public class CaiUserVisitorServiceImpl extends ServiceImpl<CaiUserVisitorMapper,CaiUserVisitor> implements CaiUserVisitorService {
@Autowired
private CaiUserCountService userCountService;
@Override @Override
public boolean visitor(StarOrVisitorRes starOrVisitorRes) { public boolean visitor(StarOrVisitorRes starOrVisitorRes) {
Long fromUserId = LoginHelper.getUserId(); Long fromUserId = LoginHelper.getUserId();
@@ -41,6 +45,7 @@ public class CaiUserVisitorServiceImpl extends ServiceImpl<CaiUserVisitorMapper,
} }
userVisitor.setCreateTime(LocalDateTime.now()); userVisitor.setCreateTime(LocalDateTime.now());
this.saveOrUpdate(userVisitor); this.saveOrUpdate(userVisitor);
userCountService.visitor(fromUserId, starOrVisitorRes.getToUserId());
return true; return true;
} }

View File

@@ -7,16 +7,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="com.ruoyi.cai.domain.CaiUserCount" id="CaiUserCountResult"> <resultMap type="com.ruoyi.cai.domain.CaiUserCount" id="CaiUserCountResult">
<result property="userId" column="user_id"/> <result property="userId" column="user_id"/>
<result property="fansCount" column="fans_count"/> <result property="fansCount" column="fans_count"/>
<result property="newFansCount" column="new_fans_count"/>
<result property="followCount" column="follow_count"/> <result property="followCount" column="follow_count"/>
<result property="visitorCount" column="visitor_count"/> <result property="visitorCount" column="visitor_count"/>
<result property="newVisitorCount" column="new_visitor_count"/>
<result property="photoCount" column="photo_count"/> <result property="photoCount" column="photo_count"/>
<result property="dynamicCount" column="dynamic_count"/> <result property="dynamicCount" column="dynamic_count"/>
<result property="receiveGiftCount" column="receive_gift_count"/> <result property="receiveGiftCount" column="receive_gift_count"/>
<result property="giveGiftCount" column="give_gift_count"/> <result property="giveGiftCount" column="give_gift_count"/>
<result property="createTime" column="create_time"/> <result property="createTime" column="create_time"/>
</resultMap> </resultMap>
<update id="visitorIncs">
update cai_user_count
set
foot_count = foot_count + #{footIncs},
visitor_count = visitor_count + #{visitorIncs}
where user_id = #{userId}
</update>
<select id="starIncs">
update cai_user_count
set
fans_count = fans_count + #{fansIncs},
follow_count = follow_count + #{followIncs}
where user_id = #{userId}
</select>
</mapper> </mapper>

View File

@@ -20,6 +20,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where to_uid = #{userId} where to_uid = #{userId}
group by gift_id group by gift_id
</select> </select>
<select id="countGiftNum" resultType="java.lang.Long">
select ifnull(sum(gift_count),0)
from cai_user_gift
<where>
<if test="fromUid != null">
and from_uid = #{fromUid}
</if>
<if test="toUid != null">
and to_uid = #{toUid}
</if>
</where>
</select>
</mapper> </mapper>