This commit is contained in:
dute7liang
2023-12-24 00:11:01 +08:00
parent 9ec7621d2d
commit 7973aa1582
23 changed files with 385 additions and 42 deletions

View File

@@ -0,0 +1,95 @@
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.CaiUserVisitor;
import com.ruoyi.cai.service.CaiUserVisitorService;
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/userVisitor")
public class CaiUserVisitorController extends BaseController {
private final CaiUserVisitorService caiUserVisitorService;
/**
* 查询用户来访记录列表
*/
@SaCheckPermission("cai:userVisitor:list")
@GetMapping("/list")
public TableDataInfo<CaiUserVisitor> list(CaiUserVisitor bo, PageQuery pageQuery) {
Page<CaiUserVisitor> page = caiUserVisitorService.page(pageQuery.build(), Wrappers.lambdaQuery(bo));
return TableDataInfo.build(page);
}
/**
* 获取用户来访记录详细信息
*
* @param id 主键
*/
@SaCheckPermission("cai:userVisitor:query")
@GetMapping("/{id}")
public R<CaiUserVisitor> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(caiUserVisitorService.getById(id));
}
/**
* 新增用户来访记录
*/
@SaCheckPermission("cai:userVisitor:add")
@Log(title = "用户来访记录", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody CaiUserVisitor bo) {
return toAjax(caiUserVisitorService.save(bo));
}
/**
* 修改用户来访记录
*/
@SaCheckPermission("cai:userVisitor:edit")
@Log(title = "用户来访记录", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody CaiUserVisitor bo) {
return toAjax(caiUserVisitorService.updateById(bo));
}
/**
* 删除用户来访记录
*
* @param ids 主键串
*/
@SaCheckPermission("cai:userVisitor:remove")
@Log(title = "用户来访记录", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(caiUserVisitorService.removeBatchByIds(Arrays.asList(ids), true));
}
}

View File

@@ -3,8 +3,8 @@ package com.ruoyi.cai.controller.app;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.dto.app.query.AnchorListQuery; import com.ruoyi.cai.dto.app.query.AnchorListQuery;
import com.ruoyi.cai.dto.app.query.GiveGiftQuery; import com.ruoyi.cai.dto.app.query.GiveGiftRes;
import com.ruoyi.cai.dto.app.query.GiveGuardQuery; import com.ruoyi.cai.dto.app.query.GiveGuardRes;
import com.ruoyi.cai.dto.app.vo.AnchorListVo; import com.ruoyi.cai.dto.app.vo.AnchorListVo;
import com.ruoyi.cai.service.CaiAnchorService; import com.ruoyi.cai.service.CaiAnchorService;
import com.ruoyi.cai.service.CaiGuardTotalService; import com.ruoyi.cai.service.CaiGuardTotalService;
@@ -37,13 +37,13 @@ public class CaiAnchorAppController {
} }
@PostMapping("/give/guard") @PostMapping("/give/guard")
public R<Boolean> giveGuard(GiveGuardQuery query){ public R<Boolean> giveGuard(GiveGuardRes query){
boolean res = guardTotalService.giveGuard(query); boolean res = guardTotalService.giveGuard(query);
return R.ok(res); return R.ok(res);
} }
@PostMapping("/give/gift") @PostMapping("/give/gift")
public R<Boolean> giveGift(GiveGiftQuery query){ public R<Boolean> giveGift(GiveGiftRes query){
boolean res = userGiftService.giveGift(query); boolean res = userGiftService.giveGift(query);
return R.ok(res); return R.ok(res);
} }

View File

@@ -0,0 +1,40 @@
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.vo.UserStarOrVisitorList;
import com.ruoyi.cai.service.CaiUserFollowService;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
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/star")
public class CaiUserStartAppController {
@Autowired
private CaiUserFollowService userFollowService;
@PostMapping("/star")
public R<Boolean> star(StarRes starRes){
boolean bool = userFollowService.star(starRes);
return R.ok(bool);
}
@PostMapping("/unstar")
public R<Boolean> unStar(StarRes starRes){
boolean bool = userFollowService.unStar(starRes);
return R.ok(bool);
}
@GetMapping("/page")
public TableDataInfo<UserStarOrVisitorList> page(StarQuery query, PageQuery pageQuery){
Page<UserStarOrVisitorList> res = userFollowService.pageApp(pageQuery,query);
return TableDataInfo.build(res);
}
}

View File

@@ -0,0 +1,42 @@
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_visitor
*
* @author 77
* @date 2023-12-24
*/
@Data
@TableName("cai_user_visitor")
public class CaiUserVisitor implements Serializable {
private static final long serialVersionUID=1L;
/**
*
*/
@TableId(value = "id")
private Long id;
/**
* 被访用户ID
*/
private Integer userId;
/**
* 访客用户ID
*/
private Long visitorId;
/**
* 是否查看 0 未查看 1 已查看
*/
private Integer isWatch;
private LocalDateTime createTime;
}

View File

@@ -3,7 +3,7 @@ package com.ruoyi.cai.dto.app.query;
import lombok.Data; import lombok.Data;
@Data @Data
public class GiveGiftQuery { public class GiveGiftRes {
/** /**
* 类型 1 个人详情页 2.IM页面 3视频页 * 类型 1 个人详情页 2.IM页面 3视频页

View File

@@ -3,7 +3,7 @@ package com.ruoyi.cai.dto.app.query;
import lombok.Data; import lombok.Data;
@Data @Data
public class GiveGuardQuery { public class GiveGuardRes {
private Long toUserId; private Long toUserId;

View File

@@ -0,0 +1,11 @@
package com.ruoyi.cai.dto.app.query;
import lombok.Data;
@Data
public class StarQuery {
// 1=查询我的关注 2=查询我的粉丝
private Integer type = 1;
private Long userId;
}

View File

@@ -0,0 +1,8 @@
package com.ruoyi.cai.dto.app.query;
import lombok.Data;
@Data
public class StarRes {
private Long toUserId;
}

View File

@@ -0,0 +1,34 @@
package com.ruoyi.cai.dto.app.vo;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class UserBaseVo {
/**
* 头像
*/
private String avatar;
/**
* 性别 0 未知 1 女 2 男
*/
private Integer gender;
/**
* 城市
*/
private Long city;
/**
* 昵称
*/
private String nickname;
/**
* 用户号/ID号
*/
private String usercode;
private Integer age;
}

View File

@@ -7,31 +7,7 @@ import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@Data @Data
public class UserListVo { public class UserListVo extends UserBaseVo {
/**
* 头像
*/
private String avatar;
/**
* 性别 0 未知 1 女 2 男
*/
private Integer gender;
/**
* 城市
*/
private Long city;
/**
* 昵称
*/
private String nickname;
/**
* 用户号/ID号
*/
private String usercode;
private Integer age;
/** /**
* 最后在线时间 * 最后在线时间
*/ */

View File

@@ -0,0 +1,11 @@
package com.ruoyi.cai.dto.app.vo;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class UserStarOrVisitorList {
private LocalDateTime happenTime;
}

View File

@@ -1,7 +1,11 @@
package com.ruoyi.cai.mapper; package com.ruoyi.cai.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.domain.CaiUserFollow; import com.ruoyi.cai.domain.CaiUserFollow;
import com.ruoyi.cai.dto.app.query.StarQuery;
import com.ruoyi.cai.dto.app.vo.UserStarOrVisitorList;
import org.apache.ibatis.annotations.Param;
/** /**
* 关注表Mapper接口 * 关注表Mapper接口
@@ -11,4 +15,5 @@ import com.ruoyi.cai.domain.CaiUserFollow;
*/ */
public interface CaiUserFollowMapper extends BaseMapper<CaiUserFollow> { public interface CaiUserFollowMapper extends BaseMapper<CaiUserFollow> {
Page<UserStarOrVisitorList> pageApp(@Param("build") Page<Object> build, @Param("query") StarQuery query);
} }

View File

@@ -0,0 +1,14 @@
package com.ruoyi.cai.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cai.domain.CaiUserVisitor;
/**
* 用户来访记录Mapper接口
*
* @author 77
* @date 2023-12-24
*/
public interface CaiUserVisitorMapper extends BaseMapper<CaiUserVisitor> {
}

View File

@@ -2,7 +2,7 @@ package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.CaiGuardTotal; import com.ruoyi.cai.domain.CaiGuardTotal;
import com.ruoyi.cai.dto.app.query.GiveGuardQuery; import com.ruoyi.cai.dto.app.query.GiveGuardRes;
import com.ruoyi.cai.dto.app.vo.GuardTotalVo; import com.ruoyi.cai.dto.app.vo.GuardTotalVo;
import java.util.List; import java.util.List;
@@ -17,5 +17,5 @@ public interface CaiGuardTotalService extends IService<CaiGuardTotal> {
List<GuardTotalVo> selectGuardTotalLimit(Long fromUserId,Integer limit); List<GuardTotalVo> selectGuardTotalLimit(Long fromUserId,Integer limit);
boolean giveGuard(GiveGuardQuery query); boolean giveGuard(GiveGuardRes query);
} }

View File

@@ -1,7 +1,12 @@
package com.ruoyi.cai.service; package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.CaiUserFollow; 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.vo.UserStarOrVisitorList;
import com.ruoyi.common.core.domain.PageQuery;
/** /**
* 关注表Service接口 * 关注表Service接口
@@ -14,4 +19,10 @@ public interface CaiUserFollowService extends IService<CaiUserFollow> {
Long getFansNumByUserId(Long userId); Long getFansNumByUserId(Long userId);
boolean checkStar(Long userId, Long followUserId); boolean checkStar(Long userId, Long followUserId);
boolean star(StarRes starRes);
boolean unStar(StarRes starRes);
Page<UserStarOrVisitorList> pageApp(PageQuery pageQuery, StarQuery query);
} }

View File

@@ -2,7 +2,7 @@ package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.CaiUserGift; import com.ruoyi.cai.domain.CaiUserGift;
import com.ruoyi.cai.dto.app.query.GiveGiftQuery; import com.ruoyi.cai.dto.app.query.GiveGiftRes;
import com.ruoyi.cai.dto.app.vo.UserGiftVo; import com.ruoyi.cai.dto.app.vo.UserGiftVo;
import java.util.List; import java.util.List;
@@ -17,5 +17,5 @@ public interface CaiUserGiftService extends IService<CaiUserGift> {
List<UserGiftVo> selectGiftList(Long userId); List<UserGiftVo> selectGiftList(Long userId);
boolean giveGift(GiveGiftQuery query); boolean giveGift(GiveGiftRes query);
} }

View File

@@ -0,0 +1,14 @@
package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.CaiUserVisitor;
/**
* 用户来访记录Service接口
*
* @author 77
* @date 2023-12-24
*/
public interface CaiUserVisitorService extends IService<CaiUserVisitor> {
}

View File

@@ -3,13 +3,11 @@ package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; 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.CaiAccount; import com.ruoyi.cai.domain.CaiAccount;
import com.ruoyi.cai.domain.CaiAccountDetail;
import com.ruoyi.cai.domain.CaiGuardTotal; import com.ruoyi.cai.domain.CaiGuardTotal;
import com.ruoyi.cai.domain.CaiUser; import com.ruoyi.cai.domain.CaiUser;
import com.ruoyi.cai.dto.app.query.GiveGuardQuery; import com.ruoyi.cai.dto.app.query.GiveGuardRes;
import com.ruoyi.cai.dto.app.vo.GuardTotalVo; import com.ruoyi.cai.dto.app.vo.GuardTotalVo;
import com.ruoyi.cai.mapper.CaiGuardTotalMapper; import com.ruoyi.cai.mapper.CaiGuardTotalMapper;
import com.ruoyi.cai.service.CaiAccountDetailService;
import com.ruoyi.cai.service.CaiAccountService; import com.ruoyi.cai.service.CaiAccountService;
import com.ruoyi.cai.service.CaiGuardTotalService; import com.ruoyi.cai.service.CaiGuardTotalService;
import com.ruoyi.cai.service.CaiUserService; import com.ruoyi.cai.service.CaiUserService;
@@ -43,7 +41,7 @@ public class CaiGuardTotalServiceImpl extends ServiceImpl<CaiGuardTotalMapper,Ca
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean giveGuard(GiveGuardQuery query) { public boolean giveGuard(GiveGuardRes query) {
Long fromUserId = LoginHelper.getUserId(); Long fromUserId = LoginHelper.getUserId();
CaiUser user = userService.getById(query.getToUserId()); CaiUser user = userService.getById(query.getToUserId());
if(user == null){ if(user == null){

View File

@@ -1,10 +1,16 @@
package com.ruoyi.cai.service.impl; package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.CaiUserFollow; 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.vo.UserStarOrVisitorList;
import com.ruoyi.cai.mapper.CaiUserFollowMapper; import com.ruoyi.cai.mapper.CaiUserFollowMapper;
import com.ruoyi.cai.service.CaiUserFollowService; import com.ruoyi.cai.service.CaiUserFollowService;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.helper.LoginHelper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -35,4 +41,32 @@ public class CaiUserFollowServiceImpl extends ServiceImpl<CaiUserFollowMapper,Ca
} }
return false; return false;
} }
@Override
public boolean star(StarRes starRes) {
Long fromUserId = LoginHelper.getUserId();
this.remove(Wrappers.lambdaQuery(CaiUserFollow.class)
.eq(CaiUserFollow::getUserId,fromUserId)
.eq(CaiUserFollow::getFollowUser,starRes.getToUserId()));
CaiUserFollow userFollow = new CaiUserFollow();
userFollow.setUserId(fromUserId);
userFollow.setFollowUser(starRes.getToUserId());
this.save(userFollow);
return true;
}
@Override
public boolean unStar(StarRes starRes) {
Long fromUserId = LoginHelper.getUserId();
this.remove(Wrappers.lambdaQuery(CaiUserFollow.class)
.eq(CaiUserFollow::getUserId,fromUserId)
.eq(CaiUserFollow::getFollowUser,starRes.getToUserId()));
return true;
}
@Override
public Page<UserStarOrVisitorList> pageApp(PageQuery pageQuery, StarQuery query) {
query.setUserId(LoginHelper.getUserId());
return baseMapper.pageApp(pageQuery.build(),query);
}
} }

View File

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.CaiAccount; import com.ruoyi.cai.domain.CaiAccount;
import com.ruoyi.cai.domain.CaiGift; import com.ruoyi.cai.domain.CaiGift;
import com.ruoyi.cai.domain.CaiUserGift; import com.ruoyi.cai.domain.CaiUserGift;
import com.ruoyi.cai.dto.app.query.GiveGiftQuery; import com.ruoyi.cai.dto.app.query.GiveGiftRes;
import com.ruoyi.cai.dto.app.vo.UserGiftVo; import com.ruoyi.cai.dto.app.vo.UserGiftVo;
import com.ruoyi.cai.mapper.CaiUserGiftMapper; import com.ruoyi.cai.mapper.CaiUserGiftMapper;
import com.ruoyi.cai.service.CaiAccountService; import com.ruoyi.cai.service.CaiAccountService;
@@ -13,7 +13,6 @@ import com.ruoyi.cai.service.CaiUserGiftService;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.helper.LoginHelper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.HierarchicalBeanFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -40,7 +39,7 @@ public class CaiUserGiftServiceImpl extends ServiceImpl<CaiUserGiftMapper,CaiUse
} }
@Override @Override
public boolean giveGift(GiveGiftQuery query) { public boolean giveGift(GiveGiftRes query) {
Long fromUserId = LoginHelper.getUserId(); Long fromUserId = LoginHelper.getUserId();
CaiGift gift = giftService.getById(query.getGiftId()); CaiGift gift = giftService.getById(query.getGiftId());
if(gift == null){ if(gift == null){

View File

@@ -0,0 +1,19 @@
package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.CaiUserVisitor;
import com.ruoyi.cai.mapper.CaiUserVisitorMapper;
import com.ruoyi.cai.service.CaiUserVisitorService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
/**
* 用户来访记录Service业务层处理
*
* @author 77
* @date 2023-12-24
*/
@RequiredArgsConstructor
@Service
public class CaiUserVisitorServiceImpl extends ServiceImpl<CaiUserVisitorMapper,CaiUserVisitor> implements CaiUserVisitorService {
}

View File

@@ -11,6 +11,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="remark" column="remark"/> <result property="remark" column="remark"/>
<result property="createTime" column="create_time"/> <result property="createTime" column="create_time"/>
</resultMap> </resultMap>
<select id="pageApp" resultType="com.ruoyi.cai.dto.app.vo.UserStarOrVisitorList">
select
t1.create_time as happen_time,
t2.avatar,t2.gender,t2.city,t2.nickname,t2.usercode,t2.age
from cai_user_follow t1
join cai_user t2 on t1.user_id = t2.id
<where>
<if test="query.type == 1">
and t1.user_id = #{query.userId}
</if>
<if test="query.type == 2">
and t1.follow_user = #{query.userId}
</if>
</where>
order by create_time desc
</select>
</mapper> </mapper>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.cai.mapper.CaiUserVisitorMapper">
<resultMap type="com.ruoyi.cai.domain.CaiUserVisitor" id="CaiUserVisitorResult">
<result property="id" column="id"/>
<result property="userId" column="user_id"/>
<result property="visitorId" column="visitor_id"/>
<result property="isWatch" column="is_watch"/>
<result property="createTime" column="create_time"/>
</resultMap>
</mapper>