init
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user