From cc467a110546225a0b0910c9d8851469da9e49f7 Mon Sep 17 00:00:00 2001 From: dute7liang <383200134@qq.com> Date: Sun, 24 Dec 2023 00:31:21 +0800 Subject: [PATCH] init --- .../controller/CaiUserCountController.java | 96 +++++++++++++++++++ .../app/CaiUserStartAppController.java | 10 +- .../app/CaiUserVisitorAppController.java | 41 ++++++++ .../com/ruoyi/cai/domain/CaiUserCount.java | 58 +++++++++++ .../com/ruoyi/cai/domain/CaiUserVisitor.java | 2 +- .../{StarRes.java => StarOrVisitorRes.java} | 2 +- .../ruoyi/cai/dto/app/query/VisitorQuery.java | 11 +++ .../cai/dto/app/vo/UserStarOrVisitorList.java | 2 + .../ruoyi/cai/mapper/CaiUserCountMapper.java | 14 +++ .../cai/mapper/CaiUserVisitorMapper.java | 5 + .../cai/service/CaiUserCountService.java | 14 +++ .../cai/service/CaiUserFollowService.java | 6 +- .../cai/service/CaiUserVisitorService.java | 8 ++ .../service/impl/CaiUserCountServiceImpl.java | 20 ++++ .../impl/CaiUserFollowServiceImpl.java | 12 +-- .../impl/CaiUserVisitorServiceImpl.java | 33 +++++++ .../mapper/cai/CaiUserCountMapper.xml | 22 +++++ .../mapper/cai/CaiUserFollowMapper.xml | 2 +- .../mapper/cai/CaiUserVisitorMapper.xml | 16 ++++ 19 files changed, 357 insertions(+), 17 deletions(-) create mode 100644 ruoyi-cai/src/main/java/com/ruoyi/cai/controller/CaiUserCountController.java create mode 100644 ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiUserVisitorAppController.java create mode 100644 ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiUserCount.java rename ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/{StarRes.java => StarOrVisitorRes.java} (74%) create mode 100644 ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/VisitorQuery.java create mode 100644 ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiUserCountMapper.java create mode 100644 ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiUserCountService.java create mode 100644 ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiUserCountServiceImpl.java create mode 100644 ruoyi-cai/src/main/resources/mapper/cai/CaiUserCountMapper.xml diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/CaiUserCountController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/CaiUserCountController.java new file mode 100644 index 00000000..875cf344 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/CaiUserCountController.java @@ -0,0 +1,96 @@ +package com.ruoyi.cai.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.cai.domain.CaiUserCount; +import com.ruoyi.cai.service.CaiUserCountService; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.core.controller.BaseController; +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.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.enums.BusinessType; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Arrays; + +/** + * 用户信息数量统计 + * + * @author 77 + * @date 2023-12-24 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/cai/userCount") +public class CaiUserCountController extends BaseController { + + private final CaiUserCountService caiUserCountService; + + /** + * 查询用户信息数量统计列表 + */ + @SaCheckPermission("cai:userCount:list") + @GetMapping("/list") + public TableDataInfo list(CaiUserCount bo, PageQuery pageQuery) { + Page page = caiUserCountService.page(pageQuery.build(), Wrappers.lambdaQuery(bo)); + return TableDataInfo.build(page); + } + + + /** + * 获取用户信息数量统计详细信息 + * + * @param userId 主键 + */ + @SaCheckPermission("cai:userCount:query") + @GetMapping("/{userId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Integer userId) { + return R.ok(caiUserCountService.getById(userId)); + } + + /** + * 新增用户信息数量统计 + */ + @SaCheckPermission("cai:userCount:add") + @Log(title = "用户信息数量统计", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody CaiUserCount bo) { + return toAjax(caiUserCountService.save(bo)); + } + + /** + * 修改用户信息数量统计 + */ + @SaCheckPermission("cai:userCount:edit") + @Log(title = "用户信息数量统计", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody CaiUserCount bo) { + return toAjax(caiUserCountService.updateById(bo)); + } + + /** + * 删除用户信息数量统计 + * + * @param userIds 主键串 + */ + @SaCheckPermission("cai:userCount:remove") + @Log(title = "用户信息数量统计", businessType = BusinessType.DELETE) + @DeleteMapping("/{userIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Integer[] userIds) { + return toAjax(caiUserCountService.removeBatchByIds(Arrays.asList(userIds), true)); + } +} 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 d020f57c..3b5d3ba2 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 @@ -2,7 +2,7 @@ package com.ruoyi.cai.controller.app; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.cai.dto.app.query.StarQuery; -import com.ruoyi.cai.dto.app.query.StarRes; +import com.ruoyi.cai.dto.app.query.StarOrVisitorRes; import com.ruoyi.cai.dto.app.vo.UserStarOrVisitorList; import com.ruoyi.cai.service.CaiUserFollowService; import com.ruoyi.common.core.domain.PageQuery; @@ -20,14 +20,14 @@ public class CaiUserStartAppController { private CaiUserFollowService userFollowService; @PostMapping("/star") - public R star(StarRes starRes){ - boolean bool = userFollowService.star(starRes); + public R star(StarOrVisitorRes starOrVisitorRes){ + boolean bool = userFollowService.star(starOrVisitorRes); return R.ok(bool); } @PostMapping("/unstar") - public R unStar(StarRes starRes){ - boolean bool = userFollowService.unStar(starRes); + public R unStar(StarOrVisitorRes starOrVisitorRes){ + boolean bool = userFollowService.unStar(starOrVisitorRes); return R.ok(bool); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiUserVisitorAppController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiUserVisitorAppController.java new file mode 100644 index 00000000..72874ecb --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/CaiUserVisitorAppController.java @@ -0,0 +1,41 @@ +package com.ruoyi.cai.controller.app; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.cai.dto.app.query.StarOrVisitorRes; +import com.ruoyi.cai.dto.app.query.VisitorQuery; +import com.ruoyi.cai.dto.app.vo.UserStarOrVisitorList; +import com.ruoyi.cai.service.CaiUserVisitorService; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.page.TableDataInfo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController("/user/visitor") +@Slf4j +public class CaiUserVisitorAppController { + + @Autowired + private CaiUserVisitorService userVisitorService; + + // 除网络问题不返回异常。避免影响业务 + @PostMapping("/visitor") + public R visitor(StarOrVisitorRes starOrVisitorRes){ + try { + boolean bool = userVisitorService.visitor(starOrVisitorRes); + }catch (Exception e){ + log.error("记录访客失败",e); + } + return R.ok(true); + } + + @GetMapping("/page") + public TableDataInfo page(VisitorQuery query, PageQuery pageQuery){ + Page res = userVisitorService.pageApp(pageQuery,query); + return TableDataInfo.build(res); + } + +} 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 new file mode 100644 index 00000000..2064f665 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiUserCount.java @@ -0,0 +1,58 @@ +package com.ruoyi.cai.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 用户信息数量统计对象 cai_user_count + * + * @author 77 + * @date 2023-12-24 + */ +@Data +@TableName("cai_user_count") +public class CaiUserCount implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 用户ID + */ + @TableId(value = "user_id") + private Integer userId; + /** + * 粉丝总数 + */ + private Integer fansCount; + /** + * 关注数 + */ + private Integer followCount; + /** + * 访客数 + */ + private Integer visitorCount; + /** + * 相册数量 + */ + private Integer photoCount; + /** + * 发帖数量 + */ + private Integer dynamicCount; + /** + * 收到的礼物数量 + */ + private Integer receiveGiftCount; + /** + * 送礼总数量 + */ + private Integer giveGiftCount; + + private LocalDateTime createTime; + +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiUserVisitor.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiUserVisitor.java index 7cf89620..aea73005 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiUserVisitor.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/CaiUserVisitor.java @@ -27,7 +27,7 @@ public class CaiUserVisitor implements Serializable { /** * 被访用户ID */ - private Integer userId; + private Long userId; /** * 访客用户ID */ diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/StarRes.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/StarOrVisitorRes.java similarity index 74% rename from ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/StarRes.java rename to ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/StarOrVisitorRes.java index 03fe6bed..9f942dd0 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/StarRes.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/StarOrVisitorRes.java @@ -3,6 +3,6 @@ package com.ruoyi.cai.dto.app.query; import lombok.Data; @Data -public class StarRes { +public class StarOrVisitorRes { private Long toUserId; } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/VisitorQuery.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/VisitorQuery.java new file mode 100644 index 00000000..3fc42d78 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/VisitorQuery.java @@ -0,0 +1,11 @@ +package com.ruoyi.cai.dto.app.query; + +import lombok.Data; + +@Data +public class VisitorQuery { + // 1=查询我的足迹 2=查询我的访客 + private Integer type = 1; + + private Long userId; +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/UserStarOrVisitorList.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/UserStarOrVisitorList.java index 5390a8c2..fd5680f5 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/UserStarOrVisitorList.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/vo/UserStarOrVisitorList.java @@ -8,4 +8,6 @@ import java.time.LocalDateTime; public class UserStarOrVisitorList { private LocalDateTime happenTime; + + private Integer isWatch; } 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 new file mode 100644 index 00000000..fcf8cc57 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiUserCountMapper.java @@ -0,0 +1,14 @@ +package com.ruoyi.cai.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.cai.domain.CaiUserCount; + +/** + * 用户信息数量统计Mapper接口 + * + * @author 77 + * @date 2023-12-24 + */ +public interface CaiUserCountMapper extends BaseMapper { + +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiUserVisitorMapper.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiUserVisitorMapper.java index d1346e37..97082dad 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiUserVisitorMapper.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/CaiUserVisitorMapper.java @@ -1,7 +1,11 @@ package com.ruoyi.cai.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.cai.domain.CaiUserVisitor; +import com.ruoyi.cai.dto.app.query.VisitorQuery; +import com.ruoyi.cai.dto.app.vo.UserStarOrVisitorList; +import org.apache.ibatis.annotations.Param; /** * 用户来访记录Mapper接口 @@ -11,4 +15,5 @@ import com.ruoyi.cai.domain.CaiUserVisitor; */ public interface CaiUserVisitorMapper extends BaseMapper { + Page pageApp(@Param("build") Page build, @Param("query") VisitorQuery query); } 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 new file mode 100644 index 00000000..8fbb767b --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiUserCountService.java @@ -0,0 +1,14 @@ +package com.ruoyi.cai.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.cai.domain.CaiUserCount; + +/** + * 用户信息数量统计Service接口 + * + * @author 77 + * @date 2023-12-24 + */ +public interface CaiUserCountService extends IService { + +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiUserFollowService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiUserFollowService.java index fa49af61..7206a747 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiUserFollowService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiUserFollowService.java @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.cai.domain.CaiUserFollow; import com.ruoyi.cai.dto.app.query.StarQuery; -import com.ruoyi.cai.dto.app.query.StarRes; +import com.ruoyi.cai.dto.app.query.StarOrVisitorRes; import com.ruoyi.cai.dto.app.vo.UserStarOrVisitorList; import com.ruoyi.common.core.domain.PageQuery; @@ -20,9 +20,9 @@ public interface CaiUserFollowService extends IService { boolean checkStar(Long userId, Long followUserId); - boolean star(StarRes starRes); + boolean star(StarOrVisitorRes starOrVisitorRes); - boolean unStar(StarRes starRes); + boolean unStar(StarOrVisitorRes starOrVisitorRes); Page pageApp(PageQuery pageQuery, StarQuery query); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiUserVisitorService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiUserVisitorService.java index d55114ae..d7810b89 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiUserVisitorService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/CaiUserVisitorService.java @@ -1,7 +1,12 @@ package com.ruoyi.cai.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.cai.domain.CaiUserVisitor; +import com.ruoyi.cai.dto.app.query.StarOrVisitorRes; +import com.ruoyi.cai.dto.app.query.VisitorQuery; +import com.ruoyi.cai.dto.app.vo.UserStarOrVisitorList; +import com.ruoyi.common.core.domain.PageQuery; /** * 用户来访记录Service接口 @@ -11,4 +16,7 @@ import com.ruoyi.cai.domain.CaiUserVisitor; */ public interface CaiUserVisitorService extends IService { + boolean visitor(StarOrVisitorRes starOrVisitorRes); + + Page pageApp(PageQuery pageQuery, VisitorQuery query); } 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 new file mode 100644 index 00000000..6efd3ce6 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/CaiUserCountServiceImpl.java @@ -0,0 +1,20 @@ +package com.ruoyi.cai.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.cai.domain.CaiUserCount; +import com.ruoyi.cai.mapper.CaiUserCountMapper; +import com.ruoyi.cai.service.CaiUserCountService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +/** + * 用户信息数量统计Service业务层处理 + * + * @author 77 + * @date 2023-12-24 + */ +@RequiredArgsConstructor +@Service +public class CaiUserCountServiceImpl extends ServiceImpl implements CaiUserCountService { + +} 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 d6dabe21..fe7e8799 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 @@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.cai.domain.CaiUserFollow; import com.ruoyi.cai.dto.app.query.StarQuery; -import com.ruoyi.cai.dto.app.query.StarRes; +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.CaiUserFollowService; @@ -43,24 +43,24 @@ public class CaiUserFollowServiceImpl extends ServiceImpl implements CaiUserVisitorService { + @Override + public boolean visitor(StarOrVisitorRes starOrVisitorRes) { + Long fromUserId = LoginHelper.getUserId(); + CaiUserVisitor userVisitor = this.getOne(Wrappers.lambdaQuery(CaiUserVisitor.class) + .eq(CaiUserVisitor::getVisitorId, fromUserId) + .eq(CaiUserVisitor::getUserId, starOrVisitorRes.getToUserId()) + .last("limit 1")); + if(userVisitor == null){ + userVisitor = new CaiUserVisitor(); + userVisitor.setVisitorId(fromUserId); + userVisitor.setUserId(starOrVisitorRes.getToUserId()); + } + userVisitor.setCreateTime(LocalDateTime.now()); + this.saveOrUpdate(userVisitor); + return true; + } + + @Override + public Page pageApp(PageQuery pageQuery, VisitorQuery query) { + query.setUserId(LoginHelper.getUserId()); + return baseMapper.pageApp(pageQuery.build(),query); + } } diff --git a/ruoyi-cai/src/main/resources/mapper/cai/CaiUserCountMapper.xml b/ruoyi-cai/src/main/resources/mapper/cai/CaiUserCountMapper.xml new file mode 100644 index 00000000..c64af5fb --- /dev/null +++ b/ruoyi-cai/src/main/resources/mapper/cai/CaiUserCountMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-cai/src/main/resources/mapper/cai/CaiUserFollowMapper.xml b/ruoyi-cai/src/main/resources/mapper/cai/CaiUserFollowMapper.xml index 33df5506..2c1957ba 100644 --- a/ruoyi-cai/src/main/resources/mapper/cai/CaiUserFollowMapper.xml +++ b/ruoyi-cai/src/main/resources/mapper/cai/CaiUserFollowMapper.xml @@ -13,7 +13,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + select + t1.create_time as happen_time,t1.is_watch, + t2.avatar,t2.gender,t2.city,t2.nickname,t2.usercode,t2.age + from cai_user_visitor t1 + join cai_user t2 on t1.user_id = t2.id + + + and t1.visitor_id = #{query.userId} + + + and t1.user_id = #{query.userId} + + + order by create_time desc +