diff --git a/doc/2025-05-17.sql b/doc/2025-05-17.sql new file mode 100644 index 00000000..e82dd9eb --- /dev/null +++ b/doc/2025-05-17.sql @@ -0,0 +1,3 @@ +ALTER TABLE `cai_user_count` +ADD COLUMN `new_fans_count` int NOT NULL DEFAULT 0 COMMENT '新增粉丝数' AFTER `give_gift_count`, +ADD COLUMN `new_visitor_count` int NOT NULL DEFAULT 0 COMMENT '新增访客数' AFTER `give_gift_count`; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/UserStartAppController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/UserStartAppController.java index bb41b741..fe8de1d2 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/UserStartAppController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/UserStartAppController.java @@ -5,18 +5,21 @@ import com.ruoyi.cai.dto.app.query.StarOrVisitorReq; import com.ruoyi.cai.dto.app.query.StarQuery; import com.ruoyi.cai.dto.app.query.star.BatchStarReq; import com.ruoyi.cai.dto.app.vo.user.UserStarOrVisitorList; +import com.ruoyi.cai.mapper.UserCountMapper; import com.ruoyi.cai.service.UserFollowService; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.helper.LoginHelper; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import java.util.List; @RestController @@ -26,6 +29,8 @@ public class UserStartAppController { @Autowired private UserFollowService userFollowService; + @Resource + private UserCountMapper userCountMapper; @PostMapping("/batchStar") @Operation(summary = "批量关注用户(为了防止接口滥用和性能问题,只会取前20个用户关注超过的舍弃)") @@ -55,6 +60,11 @@ public class UserStartAppController { @Operation(summary = "关注、粉丝列表查询") @Log(title = "粉丝列表查询", businessType = BusinessType.OTHER,isPrintResponseData = false, isSaveDb = false) public R> page(StarQuery query, PageQuery pageQuery){ + // 查询粉丝列表,并且是第一页 就清空 + if(query.getType() != null && query.getType() == 2 + && (pageQuery.getPageNum() == null || pageQuery.getPageNum() == 1)){ + userCountMapper.resetNewStarIncs(LoginHelper.getUserId()); + } Page res = userFollowService.pageApp(pageQuery,query); return R.ok(res.getRecords()); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/UserVisitorAppController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/UserVisitorAppController.java index f4971ce5..8d85e68c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/UserVisitorAppController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/UserVisitorAppController.java @@ -5,18 +5,21 @@ import com.ruoyi.cai.constant.CommonConstant; import com.ruoyi.cai.dto.app.query.StarOrVisitorReq; import com.ruoyi.cai.dto.app.query.VisitorQuery; import com.ruoyi.cai.dto.app.vo.user.UserStarOrVisitorList; +import com.ruoyi.cai.mapper.UserCountMapper; import com.ruoyi.cai.service.UserVisitorService; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.helper.LoginHelper; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import java.util.List; @RestController @@ -27,6 +30,8 @@ public class UserVisitorAppController { @Autowired private UserVisitorService userVisitorService; + @Resource + private UserCountMapper userCountMapper; // 除网络问题不返回异常。避免影响业务 @PostMapping("/visitor") @@ -53,6 +58,11 @@ public class UserVisitorAppController { record.setCityId(CommonConstant.CITY_ID); } } + // 查询粉丝列表,并且是第一页 就清空 + if(query.getType() != null && query.getType() == 2 + && (pageQuery.getPageNum() == null || pageQuery.getPageNum() == 1)){ + userCountMapper.resetNewVisitorIncs(LoginHelper.getUserId()); + } return R.ok(records); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/UserCount.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/UserCount.java index 773c44ef..bae59021 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/UserCount.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/UserCount.java @@ -25,6 +25,14 @@ public class UserCount implements Serializable { */ @TableId(value = "user_id",type = IdType.INPUT) private Long userId; + /** + * 新增粉丝数 + */ + private Long newFansCount; + /** + * 新增访客数 + */ + private Long newVisitorCount; /** * 粉丝总数 */ diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/UserCountMapper.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/UserCountMapper.java index 22a176dc..f1d494bb 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/UserCountMapper.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/UserCountMapper.java @@ -16,7 +16,15 @@ public interface UserCountMapper extends BaseMapper { void starIncs(@Param("userId") Long userId, @Param("fansIncs") int fansIncs, @Param("followIncs") int followIncs); + void newStarIncs(@Param("userId") Long userId); + + void resetNewStarIncs(@Param("userId") Long userId); + void visitorIncs(@Param("userId") Long userId, @Param("footIncs") int footIncs, @Param("visitorIncs") int visitorIncs); + void newVisitorIncs(Long userId); + + void resetNewVisitorIncs(Long userId); + Page pageAdmin(@Param("build") Page build, @Param("bo") UserCountAdminVo bo); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserCountServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserCountServiceImpl.java index 031fcc94..c4e226ba 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserCountServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/UserCountServiceImpl.java @@ -43,6 +43,7 @@ public class UserCountServiceImpl extends ServiceImpl + + update cai_user_count + set new_fans_count = new_fans_count + 1 + where user_id = #{userId} + + + update cai_user_count + set new_visitor_count = new_visitor_count + 1 + where user_id = #{userId} + update cai_user_count set @@ -22,6 +32,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" visitor_count = visitor_count + #{visitorIncs} where user_id = #{userId} + + update cai_user_count + set new_fans_count = 0 + where user_id = #{userId} and new_fans_count > 0 + + + update cai_user_count + set new_visitor_count = 0 + where user_id = #{userId} and new_visitor_count > 0 +