社交系统中用户好友关系 (添加好友)设计
用户需求:
接口设计:
1.<添加> 好友申请
好友申请:
例如 1208 申请 添加 1209 ,保存时,先存 MemberID=1208,状态Category=“no” ,等那边同意后再存 MemberID=1209,状态Category=“yes” ,然后修改 添加人1208 的数据状态 Category=“yes”;
(后续判断谁加的谁,添加人的关系id > 被添加人的关系id)
(例如:1208 1209 ) 一条数据是 单向好友
(例如:1209 1208 ) 1209 也有 1208的好友 (两条数据 双向好友)
添加前先判断当前用户是否已添加 (添加用户需要给关系表加一条数据,对方同意后再加一条,形成双向好友)
这里判断只需要判断当前用户有没有发起过好友申请,好友关系数据的删除在 同意申请逻辑中处理。
传参:用户id,好友id
2.<同意> 好友申请
同意申请: 根据 申请数据id修改 加好友时关系表 状态 no 改成 yes,且加一条 yes的数据,形成 双向好友。
(例如:1208 1209 ) 一条数据是 单向好友
(例如:1209 1208 ) 1209 也有 1208的好友 (两条数据 双向好友)
参数:申请数据id,category = yes
<拒绝> 好友申请
拒绝申请: 根据 申请数据id修改数据状态,软删除 (修改category申请状态:通过 yes, 暂未通过 no , 拒绝 refuse)
参数:申请数据id,category = refuse
3.<删除> 好友 (双向删除)
根据 好友id,自己的用户id,清空关系表
参数: 当前好友数据id
4.查询当前用户的 <申请列表> 发送的好友申请
参数: 用户id
查询: 只展示未通过的申请。(用id查询 关系表,状态=no/refuse的数据,refuse 前台标识 : 已拒绝)
select * from 关系表 where MemberID = 1208 and (Category = “no” or Category = “refuse”) ;
5.查询当前用户的 <申请通知> 收到的好友申请
参数: 用户id
select * from 关系表 where RelevanceID = 11 and Category = “no” ;
6.查询当前用户的 <好友列表>
参数: 用户id
查询好友列表: 用自己的id查询
select * from 关系表 where MemberID = 1208 and Category = “yes” ;
用户表
用户id | 用户姓名 |
1208 | 畅想 |
1204 | 小张 |
16 | ccc |
11 | xxx |
用户关系表(下面的字段 自定义 ,代码中用的是 复用表字段)
- 我的好友 : 好友申请 FriendsRequest
- 发起的好友列表: 申请列表 (姓名,头像) (通过,未通过,拒绝)
- memberid (myid) 用户id
- relevanceid (friendid) 好友id
- category (code) 申请状态:通过 yes, 暂未通过 no , 拒绝 refuse
- remark 他关注的好友 500 (好友列表人数)
Controller层
package com.bxproject.huaqiabroad.controller;
import com.bxproject.huaqiabroad.Server.FriendsRequestService;
import com.bxwl.common.base.Result;
import com.bxwl.common.utils.JwtUtil;
import com.bxwl.memberbase.model.Member;
import com.bxwl.memberbase.model.Memberfavorite;
import com.bxwl.memberbase.service.MemberService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 我的好友 : 好友申请 FriendsRequest
* 发起的好友列表: 申请列表 (姓名,头像) (通过,未通过,拒绝)
* memberid 用户id
* relevanceid 好友id
* category 申请状态:通过 yes, 暂未通过 no , 拒绝 refuse
* remark 他关注的好友 500 (好友列表人数)
*/
@RestController
@RequestMapping({"friendsRequest"})
public class FriendsRequestController {
private static final Logger log = LoggerFactory.getLogger(FriendsRequestController.class);
@Resource
private MemberService memberService;
@Value("${local.authorizeforetoken}")
private String authorizetoken;
@Resource
FriendsRequestService friendsRequestService;
/**
* <添加> 好友申请
* 好友申请:
* 例如 1208 申请 添加 1209 ,保存时,先存 MemberID=1208,状态Category="no" ,等那边同意后再存 MemberID=1209,状态Category="yes" ,然后修改 添加人1208 的数据状态 Category="yes";
* (后续判断谁加的谁,添加人的关系id > 被添加人的关系id)
* (例如:1208 1209 ) 一条数据是 单向好友
* (例如:1209 1208 ) 1209 也有 1208的好友 (两条数据 双向好友)
* 添加前先判断当前用户是否已添加 (添加用户需要给关系表加一条数据,对方同意后再加一条,形成双向好友)
* 这里判断只需要判断当前用户有没有发起过好友申请,好友关系数据的删除在 同意申请逻辑中处理。
* 传参:用户id,好友id
*
* @return 新增结果
*/
@ResponseBody
@PostMapping(value = "/addFriendsRequest")
public Result addFriendsRequest(@RequestBody Map<String, String> obj, HttpServletRequest request) {
try {
if (obj == null) {
throw new IllegalArgumentException("新增请求体不能为空");
}
if (obj.get("memberid").isEmpty() || obj.get("relevanceid").isEmpty()) {
throw new IllegalArgumentException("用户id or 好友id不能为空");
}
String msg = JwtUtil.checkUserToken(request.getHeader(authorizetoken));
if (msg.equals("登录超时") || msg.equals("未登录")) {
return new Result(msg, null, 401);
}
Member member = memberService.selectByPrimaryKey(Integer.parseInt(msg));
if (member == null) {
return new Result("无此用户", null, 401);
}
// 用户id
int memberId = member.getId();
// 好友id
int relevanceid = obj.get("relevanceid") == null ? 0 : Integer.parseInt(obj.get("relevanceid"));
// 判断当前用户是否已添加
Integer rows = friendsRequestService.queryIsAdded(memberId, relevanceid);
if (rows != null && rows > 0) {
return new Result("当前用户已添加", null, 401);
}
Memberfavorite memberfavorite = new Memberfavorite();
memberfavorite.setMemberid(memberId);
memberfavorite.setRelevanceid(relevanceid);
// 添加时间
Date nowDate = new Date();
memberfavorite.setAddtime(nowDate);
// 申请状态:通过 yes/未通过 no
memberfavorite.setCategory("no");
// 查询 好友关注总数
int friendRows = friendsRequestService.queryByMyFriendsCount(relevanceid);
// 他关注的好友 500 (好友列表人数)
memberfavorite.setRemark(String.valueOf(friendRows));
// 插入数据
friendsRequestService.insert(memberfavorite);
return new Result("添加申请已发送", memberfavorite, 0);
} catch (IllegalArgumentException e) {
log.error("参数验证失败:", e);
return new Result("参数错误", e, -1);
} catch (Exception e) {
log.info("addFriendsRequest出错,错误:" + e);
return new Result("操作失败", null, 500);
}
}
/**
* <同意> 好友申请
* 同意申请: 根据 申请数据id修改 加好友时关系表 状态 no 改成 yes,且加一条 yes的数据,形成 双向好友。
* (例如:1208 1209 ) 一条数据是 单向好友
* (例如:1209 1208 ) 1209 也有 1208的好友 (两条数据 双向好友)
* 参数:申请数据id,category = yes
* <拒绝> 好友申请
* 拒绝申请: 根据 申请数据id修改数据状态,软删除 (修改category申请状态:通过 yes, 暂未通过 no , 拒绝 refuse)
* 参数:申请数据id,category = refuse
*
* @return 编辑结果
*/
@PostMapping("/agreeOrRefuseFriendsRequest")
public Result agreeOrRefuseFriendsRequest(HttpServletRequest request, @RequestBody Map<String, String> obj) {
try {
String msg = JwtUtil.checkUserToken(request.getHeader(authorizetoken));
if (msg.equals("登录超时") || msg.equals("未登录")) {
return new Result(msg, null, 401);
}
Member member = memberService.selectByPrimaryKey(Integer.parseInt(msg));
if (member == null) {
return new Result("无此用户", null, 401);
}
if (obj.get("memberid").isEmpty() || obj.get("relevanceid").isEmpty() || obj.get("id").isEmpty()) {
throw new IllegalArgumentException("id不能为空");
}
// 判断参数是 同意申请 还是 拒绝申请 标识
String category = obj.get("category");
// 参数控制 只能是 refuse/yes
if (category.equals("refuse") || category.equals("yes")) {
// 根据数据id查询,验证当前数据的好友状态
Memberfavorite verify = friendsRequestService.queryById(Integer.parseInt(obj.get("id")));
// 同意 or 拒绝, 只处理状态是no 暂未通过 的好友申请数据
if(verify.getCategory().isEmpty() || verify.getCategory() == null || !verify.getCategory().equals("no")){
return new Result("数据标识不对,请联系管理员处理", null, 401);
}
// “数据验证” 验证当前数据: 好友状态标识 是 暂未通过 no
if(verify.getCategory().equals("no")){
// 用户id
Integer memberId = member.getId();
// Integer memberId = obj.get("memberid") == null ? 0 : Integer.parseInt(obj.get("memberid"));
// 好友id
int relevanceid = verify.getRelevanceid() == null ? 0 : verify.getRelevanceid();
// 初始化对象
Memberfavorite updateMemberfavorite = new Memberfavorite();
updateMemberfavorite.setId(Integer.valueOf(obj.get("id")));
// 申请状态:通过 yes/未通过 no/拒绝 refuse
updateMemberfavorite.setCategory(category);
// 添加时间
Date nowDate = new Date();
updateMemberfavorite.setAddtime(nowDate);
// 查询 好友关注总数
int friendRows = friendsRequestService.queryByMyFriendsCount(memberId);
// 他关注的好友 500 (好友列表人数)
updateMemberfavorite.setRemark(String.valueOf(friendRows));
// <修改>好友关系
friendsRequestService.update(updateMemberfavorite);
// 同意申请,再加一条数据,形成双向好友 (拒绝申请/同意申请 都需要修改状态,上面的代码逻辑都需要走,下面代码是 同意后新增数据。拒绝申请不走下面的逻辑)
if (category.equals("yes")) {
Memberfavorite memberfavorite = new Memberfavorite();
// 反向保存数据id
memberfavorite.setMemberid(memberId);
memberfavorite.setRelevanceid(relevanceid);
// 申请状态:通过 yes/未通过 no
memberfavorite.setCategory(category);
// 添加时间
nowDate = new Date();
memberfavorite.setAddtime(nowDate);
// 查询 好友关注总数
friendRows = friendsRequestService.queryByMyFriendsCount(relevanceid);
// 他关注的好友 500 (好友列表人数)
memberfavorite.setRemark(String.valueOf(friendRows));
// <添加>好友关系
friendsRequestService.insert(memberfavorite);
}
}
} else {
return new Result("参数有误", null, 401);
}
return new Result("操作成功", null, 0);
} catch (Exception e) {
log.info("agreeOrRefuseFriendsRequest出错,错误:" + e);
return new Result("失败", null, 500);
}
}
/**
* <删除> 好友 (双向删除)
* 根据 好友id,自己的用户id,清空关系表
* 参数: 当前好友数据id
* @return 删除是否成功
*/
@PostMapping("/deleteFriendsRequest")
public Result deleteFriendsRequest(HttpServletRequest request, @RequestBody Map<String, String> obj) {
try {
if (obj == null) {
throw new IllegalArgumentException("请求体不能为空");
}
String msg = JwtUtil.checkUserToken(request.getHeader(authorizetoken));
if (msg.equals("登录超时") || msg.equals("未登录")) {
return new Result(msg, null, 401);
}
Member member = memberService.selectByPrimaryKey(Integer.parseInt(msg));
if (member == null) {
return new Result("无此用户", null, 401);
}
// 根据好友数据id查询到 对应的用户id
Memberfavorite verify = friendsRequestService.queryById(Integer.parseInt(obj.get("id")));
int memberid = verify.getMemberid();
int relevanceid = verify.getRelevanceid();
// 删除 好友关系(双向删除)
boolean isok = friendsRequestService.delete(memberid,relevanceid);
if (isok) {
return new Result("删除成功", null, 0);
} else {
return new Result("删除失败", null, 300);
}
} catch (IllegalArgumentException e) {
log.error("参数验证失败:", e);
return new Result("参数错误", e, -1);
} catch (Exception e) {
log.error("deleteFriendsRequest出错:", e);
return new Result("系统错误", e, -1);
}
}
/**
* 查询当前用户的 <申请列表> 发送的好友申请
* 参数: 用户id
* 查询: 只展示未通过的申请。(用id查询 关系表,状态=no/refuse的数据,refuse 前台标识 : 已拒绝)
* select * from member_favorite where MemberID = 1208 and (Category = "no" or Category = "refuse") ;
*
* @return 查询当前用户发布的最新动态结果
*/
@GetMapping("/queryFriendsRequestByList")
public Result queryFriendsRequestByList(@RequestHeader Map<String, String> headers, Memberfavorite memberfavorite) {
try {
String msg = JwtUtil.checkUserToken(headers.get(authorizetoken));
if (msg.equals("登录超时") || msg.equals("未登录")) {
return new Result(msg, null, -1);
}
Member member = memberService.selectByPrimaryKey(Integer.parseInt(msg));
if (member == null) {
return new Result("无此用户", null, -1);
}
if (memberfavorite.getPage() != null) {
if (memberfavorite.getPage() == 1) {
memberfavorite.setPage(0);
} else {
memberfavorite.setPage((memberfavorite.getPage() - 1) * memberfavorite.getLimit());
}
}
// 根据 用户id 查询 申请列表
List<Memberfavorite> friendsRequestList = friendsRequestService.queryFriendsRequestByList(memberfavorite);
int count = friendsRequestService.queryByRequestCount(memberfavorite);
if (count > 0) {
return new Result("成功", friendsRequestList, 0, count, memberfavorite.getLimit());
} else {
return new Result("无数据", null, 1, 0, 0);
}
} catch (Exception e) {
log.info("queryFriendsRequestByList出错,错误:" + e);
return new Result("出错", e, -1);
}
}
/**
* 查询当前用户的 <申请通知> 收到的好友申请
* 参数: 用户id
* select * from member_favorite where RelevanceID = 11 and Category = "no" ;
*
* @return 查询当前用户发布的最新动态结果
*/
@GetMapping("/queryGotFriendsRequestByList")
public Result queryGotFriendsRequestByList(@RequestHeader Map<String, String> headers, Memberfavorite memberfavorite) {
try {
String msg = JwtUtil.checkUserToken(headers.get(authorizetoken));
if (msg.equals("登录超时") || msg.equals("未登录")) {
return new Result(msg, null, -1);
}
Member member = memberService.selectByPrimaryKey(Integer.parseInt(msg));
if (member == null) {
return new Result("无此用户", null, -1);
}
if (memberfavorite.getPage() != null) {
if (memberfavorite.getPage() == 1) {
memberfavorite.setPage(0);
} else {
memberfavorite.setPage((memberfavorite.getPage() - 1) * memberfavorite.getLimit());
}
}
// 根据 用户id 查询 收到的好友申请
List<Memberfavorite> gotFriendsRequestList = friendsRequestService.queryGotFriendsRequestByList(memberfavorite);
int count = friendsRequestService.queryByGotFriendsRequestCount(memberfavorite);
if (count > 0) {
return new Result("成功", gotFriendsRequestList, 0, count, memberfavorite.getLimit());
} else {
return new Result("无数据", null, 1, 0, 0);
}
} catch (Exception e) {
log.info("queryGotFriendsRequestByList出错,错误:" + e);
return new Result("出错", e, -1);
}
}
/**
* 查询当前用户的 <好友列表>
* 参数: 用户id
* 查询好友列表: 用自己的id查询
* select * from member_favorite where MemberID = 1208 and Category = "yes" ;
*
* @return 查询当前用户的结果
*/
@GetMapping("/queryFriendsByList")
public Result queryFriendsByList(@RequestHeader Map<String, String> headers, Memberfavorite memberfavorite) {
try {
String msg = JwtUtil.checkUserToken(headers.get(authorizetoken));
if (msg.equals("登录超时") || msg.equals("未登录")) {
return new Result(msg, null, -1);
}
Member member = memberService.selectByPrimaryKey(Integer.parseInt(msg));
if (member == null) {
return new Result("无此用户", null, -1);
}
if (memberfavorite.getPage() != null) {
if (memberfavorite.getPage() == 1) {
memberfavorite.setPage(0);
} else {
memberfavorite.setPage((memberfavorite.getPage() - 1) * memberfavorite.getLimit());
}
}
// 根据 用户id 查询 好友列表
List<Memberfavorite> friendsList = friendsRequestService.queryFriendsByList(memberfavorite);
int count = friendsRequestService.queryByFriendsCount(memberfavorite);
if (count > 0) {
return new Result("成功", friendsList, 0, count, memberfavorite.getLimit());
} else {
return new Result("无数据", null, 1, 0, 0);
}
} catch (Exception e) {
log.info("queryFriendsByList出错,错误:" + e);
return new Result("出错", e, -1);
}
}
}
Mapper层
package com.bxproject.huaqiabroad.Mapper;
import com.bxwl.memberbase.model.Memberfavorite;
import java.util.List;
public interface FriendsRequestMapper {
Memberfavorite queryById(int id);
/**
* 新增数据
*
* @param memberfavorite 实例对象
*/
void insert(Memberfavorite memberfavorite);
void update(Memberfavorite memberfavorite);
Integer queryIsAdded(int memberid,int relevanceid);
Integer queryByMyFriendsCount(int relevanceid);
boolean delete(int memberid,int relevanceid);
// 查询 发送的好友申请
List<Memberfavorite> queryFriendsRequestByList(Memberfavorite memberfavorite);
/**
* 查询 申请列表 统计总行数
*
* @param memberfavorite 查询条件
* @return 申请列表 总行数
*/
int queryByRequestCount(Memberfavorite memberfavorite);
// 查询好友列表
List<Memberfavorite> queryFriendsByList(Memberfavorite memberfavorite);
/**
* 查询 申请列表 统计总行数
*
* @param memberfavorite 查询条件
* @return 申请列表 总行数
*/
int queryByFriendsCount(Memberfavorite memberfavorite);
// 查询 收到的好友申请
List<Memberfavorite> queryGotFriendsRequestByList(Memberfavorite memberfavorite);
/**
* 查询 收到的申请 统计总行数
*
* @param memberfavorite 查询条件
* @return 申请列表 总行数
*/
int queryByGotFriendsRequestCount(Memberfavorite memberfavorite);
}
Impl
package com.bxproject.huaqiabroad.Server.Impl;
import com.bxproject.huaqiabroad.Mapper.FriendsRequestMapper;
import com.bxproject.huaqiabroad.Server.FriendsRequestService;
import com.bxwl.memberbase.model.Memberfavorite;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service("friendsRequestService")
public class FriendsRequestServiceImpl implements FriendsRequestService {
@Resource
private FriendsRequestMapper FriendsRequestMapper;
@Override
public Memberfavorite queryById(int id) {
return FriendsRequestMapper.queryById(id);
}
/**
* 新增数据
*
* @param memberfavorite 实例对象
* @return 实例对象
*/
@Override
public Memberfavorite insert(Memberfavorite memberfavorite) {
this.FriendsRequestMapper.insert(memberfavorite);
return memberfavorite;
}
@Override
public Integer queryIsAdded(int memberid,int relevanceid) {
return FriendsRequestMapper.queryIsAdded(memberid, relevanceid);
}
@Override
public Integer queryByMyFriendsCount(int relevanceid) {
return FriendsRequestMapper.queryByMyFriendsCount(relevanceid);
}
/**
* 同意 好友申请
*
* @param memberfavorite 实例对象
* @return 实例对象
*/
@Override
public Memberfavorite update(Memberfavorite memberfavorite) {
this.FriendsRequestMapper.update(memberfavorite);
return memberfavorite;
}
// 删除
public boolean delete(int memberid,int relevanceid) {
return FriendsRequestMapper.delete(memberid,relevanceid);
}
public List<Memberfavorite> queryFriendsRequestByList(Memberfavorite memberfavorite) {
return FriendsRequestMapper.queryFriendsRequestByList(memberfavorite);
}
@Override
public int queryByRequestCount(Memberfavorite memberfavorite) {
return FriendsRequestMapper.queryByRequestCount(memberfavorite);
}
public List<Memberfavorite> queryFriendsByList(Memberfavorite memberfavorite) {
return FriendsRequestMapper.queryFriendsByList(memberfavorite);
}
@Override
public int queryByFriendsCount(Memberfavorite memberfavorite) {
return FriendsRequestMapper.queryByRequestCount(memberfavorite);
}
public List<Memberfavorite> queryGotFriendsRequestByList(Memberfavorite memberfavorite) {
return FriendsRequestMapper.queryGotFriendsRequestByList(memberfavorite);
}
@Override
public int queryByGotFriendsRequestCount(Memberfavorite memberfavorite) {
return FriendsRequestMapper.queryByGotFriendsRequestCount(memberfavorite);
}
}
Service层
package com.bxproject.huaqiabroad.Server;
import com.bxwl.memberbase.model.Memberfavorite;
import java.util.List;
public interface FriendsRequestService {
// 查询
Memberfavorite queryById(int id);
// 新增数据
Memberfavorite insert(Memberfavorite memberfavorite);
// 同意/拒绝 好友申请
Memberfavorite update(Memberfavorite memberfavorite);
// 判断当前好友是否已添加
Integer queryIsAdded(int memberid,int relevanceid);
// 查询好友数关注数
Integer queryByMyFriendsCount(int relevanceid);
// 删除 ( 拒绝好友申请 )
boolean delete(int memberid,int relevanceid);
// 发送的好友申请
List<Memberfavorite> queryFriendsRequestByList(Memberfavorite memberfavorite);
int queryByRequestCount(Memberfavorite memberfavorite);
// 好友列表
List<Memberfavorite> queryFriendsByList(Memberfavorite memberfavorite);
int queryByFriendsCount(Memberfavorite memberfavorite);
// 收到的好友申请
List<Memberfavorite> queryGotFriendsRequestByList(Memberfavorite memberfavorite);
int queryByGotFriendsRequestCount(Memberfavorite memberfavorite);
}
xml
<?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.bxproject.huaqiabroad.Mapper.FriendsRequestMapper">
<resultMap type="com.bxwl.memberbase.model.Memberfavorite" id="MemberfavoriteMap">
<result property="id" column="ID" jdbcType="INTEGER"/>
<result property="memberid" column="MemberID" jdbcType="INTEGER"/>
<result property="category" column="Category" jdbcType="VARCHAR"/>
<result property="relevanceid" column="RelevanceID" jdbcType="INTEGER"/>
<result property="addtime" column="AddTime" jdbcType="TIMESTAMP"/>
<result property="remark" column="Remark" jdbcType="VARCHAR"/>
</resultMap>
<!-- 根据申请数据id 查询数据详情,同意/拒绝 好友申请时, 做数据验证 -->
<select id="queryById" resultMap="MemberfavoriteMap">
select
id,memberid,category,relevanceid,addtime,remark
from member_favorite
where id = #{id}
</select>
<!--新增所有列-->
<insert id="insert" keyProperty="id" useGeneratedKeys="true">
insert into member_favorite(MemberID, Category, RelevanceID, AddTime, Remark)
values (#{memberid}, #{category}, #{relevanceid}, #{addtime}, #{remark})
</insert>
<!--通过主键修改数据-->
<update id="update">
update member_favorite
<set>
<if test="memberid != null">MemberID = #{memberid},</if>
<if test="category != null">Category = #{category},</if>
<if test="relevanceid != null">RelevanceID = #{relevanceid},</if>
<if test="addtime != null">AddTime = #{addtime},</if>
<if test="remark != null">Remark = #{remark},</if>
</set>
where ID = #{id}
</update>
<!-- 通过主键删除 双向删除好友 -->
<!-- DELETE from member_favorite where (MemberID = 11 or RelevanceID = 1208) or (MemberID = 1208 or RelevanceID = 11) ;-->
<delete id="delete">
delete
from member_favorite
where (MemberID = #{memberid} and RelevanceID = #{relevanceid})
or (MemberID = #{relevanceid} and RelevanceID = #{memberid})
</delete>
<!--查新增好友前, 验证是否是好友 -->
<!-- 例如 自己id:1208 好友id: 1209-->
<select id="queryIsAdded" resultMap="MemberfavoriteMap">
select IFNULL((
select count(1) from member_favorite
where
<!-- 好友列表 验证查询 : 用自己的id查询,count总数大于1,有数据证明加过好友 -->
(MemberID = #{memberid} and relevanceID = #{relevanceid})
or
(MemberID = #{relevanceid} and relevanceID = #{memberid})
), 0)
</select>
<!-- 查询 好友关注 总数 -->
<!-- select count(*) from member_favorite where MemberID = 1208 and Category = "yes" ;-->
<select id="queryByMyFriendsCount" resultType="java.lang.Integer">
select count(*)
from member_favorite
where MemberID = #{id} and Category = "yes"
</select>
<!--查询 申请列表 指定行数据-->
<!-- select * from member_favorite where MemberID = 1208 and (Category = "no" or Category = "refuse") ;-->
<select id="queryFriendsRequestByList" resultMap="MemberfavoriteMap">
select
ID,MemberID,Category,RelevanceID,AddTime,Remark
from member_favorite
where MemberID = #{id}
and (Category = "no" or Category = "refuse")
<if test="page != null and limit != null">
limit #{page}, #{limit}
</if>
</select>
<!-- 查询 申请列表 总数 -->
<!-- select count(*) from member_favorite where MemberID = 1208 and (Category = "no" or Category = "refuse") ;-->
<select id="queryByRequestCount" resultType="java.lang.Integer">
select count(*)
from member_favorite
where MemberID = #{id}
and (Category = "no" or Category = "refuse")
</select>
<!--查询 好友列表 指定行数据-->
<!-- select * from member_favorite where MemberID = 1208 and Category = "yes" ;-->
<select id="queryFriendsByList" resultMap="MemberfavoriteMap">
select
ID,MemberID,Category,RelevanceID,AddTime,Remark
from member_favorite
where MemberID = #{id} and Category = "yes"
<if test="page != null and limit != null">
limit #{page}, #{limit}
</if>
</select>
<!-- 查询 好友列表 总数 -->
<!-- select count(*) from member_favorite where MemberID = 1208 and Category = "yes" ;-->
<select id="queryByFriendsCount" resultType="java.lang.Integer">
select count(*)
from member_favorite
where MemberID = #{id} and Category = "yes"
</select>
<!--查询 收到的好友申请 指定行数据-->
<!-- select * from member_favorite where RelevanceID = 11 and Category = "no" ;-->
<select id="queryGotFriendsRequestByList" resultMap="MemberfavoriteMap">
select
ID,MemberID,Category,RelevanceID,AddTime,Remark
from member_favorite
where RelevanceID = #{id} and Category = "no"
<if test="page != null and limit != null">
limit #{page}, #{limit}
</if>
</select>
<!-- 查询 收到的好友申请 总数 -->
<!-- select * from member_favorite where RelevanceID = 11 and Category = "no" ;-->
<select id="queryByGotFriendsRequestCount" resultType="java.lang.Integer">
select count(*)
from member_favorite
where RelevanceID = #{id} and Category = "no"
</select>
</mapper>
实体
package com.bxwl.memberbase.model;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.util.Date;
// 实体类
public class Memberfavorite implements Serializable {
private static final long serialVersionUID = -32569297257851674L;
private Integer id;
private String name;
private String alias;
private Integer memberid;
private String category;
private Integer relevanceid;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date addtime;
private String remark;
private Integer page;
private Integer limit;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getMemberid() {
return memberid;
}
public void setMemberid(Integer memberid) {
this.memberid = memberid;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public Integer getRelevanceid() {
return relevanceid;
}
public void setRelevanceid(Integer relevanceid) {
this.relevanceid = relevanceid;
}
public Date getAddtime() {
return addtime;
}
public void setAddtime(Date addtime) {
this.addtime = addtime;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public Integer getPage() {
return page;
}
public void setPage(Integer page) {
this.page = page;
}
public Integer getLimit() {
return limit;
}
public void setLimit(Integer limit) {
this.limit = limit;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAlias() {
return alias;
}
public void setAlias(String alias) {
this.alias = alias;
}
}