Java相互关注_java --关注/取消关注
业务需求:A、B两个用户的关注/取消关注接口
1.接口文档如下
2.数据库设计如下
3.数据库数据存放如下
由数据库设计文档和数据库存放关系可知,
数据 1000000004 既可以在数据库的A位置,也可以在数据库的B位置。
3.该接口的webservice思路如下
关注/取消关注 用户的思路
参数:用户A、用户B、关注/取消关注flag
A和B的关系,假设A在数据库的A位置
00 A关注B
01 B关注A
02 A、B相互关注
备注:A在数据库的B位置时,如上关系为01、00、02
思路如下:
0.去数据库查询A、B这两个用户有没有关系(00/01/02)
1.点击关注 --说明A和B的关系:1>没有关系;2>B关注A
1-1.判断A和B的关系
1-2.如果没有关系,则添加一条数据
1-3.如果有关系,则将关系改为相互关注(这个要结合实际,如果A已经关注了B,则A不能在关注B了,即进来
的肯定是B点击了关注A)
2.点击取消关注 --说明A和B的关系:1>A关注B;2>A、B相互关注
2-1.判断A和B的关系
2-2.如果是关注(结合实际,只有相互关注和关注两种关系),则取消关注,即删除这条数据
2-3.如果是相互关注,则需要判断A和B的位置
2-3-1 如果A在数据库的A位置,则修改A和B的关系为被关注--即关系为01
2-3-2 如果A在数据库的B位置,则修改A和B的关系为被关注--即关系为00
4.该接口的java代码如下
@Service
public class UserFollowServiceImpl implements UserFollowService {
@Autowired
private UserFollowMapper userFollowMapper;
/**
* 关注(取消关注)用户
*
* @param userIdB
* 被关注者id
* @param userId
* 用户Id
* @param flag
* 0:关注 1:取消关注
*/
@Override
public ResultObject updateOrInsertUserFocus(UserFollowVO userFollowVO)
throws DataAccessException {
boolean needBreak = false;
String userId = userFollowVO.getUserId();
String userIdB = userFollowVO.getUserIdB();
String flag = userFollowVO.getFlag();
ResultObject ro = new ResultObject();
ro.setResultCode(ResultCode.FAILED);
if (StringUtils.isBlank(userIdB) || StringUtils.isBlank(userId)
|| StringUtils.isBlank(flag)) {
ro.setResultCode(ResultCode.FAILED);
ro.setResultMsg(ResultMsg.MSG_PARAM_ERROR);
needBreak = true;
}
if (!needBreak) {
// 当前时间
String timeNow = Utils.getSysTime();
// 查找双方关系
UserFollow userFollow = userFollowMapper.updateOrInsertUserFocus(
userId, userIdB);
// 点击需要关注
if (flag.equals(Constant.FOLLOW)) {
if (userFollow != null) {
// 已经存在关注关系,改为相互关注
userFollowMapper.updUserFocus(userId, userIdB,
Constant.A_BOTH_B, timeNow);
int temp = userFollowMapper.selectCount(userIdB);
ro.setData(temp);
HashMap map = new HashMap<>();
map.put("focusNums", temp);
ro.setData(map);
ro.setResultCode(ResultCode.SUCCESS);
} else {
// 不存在关注关系,改为单方面关注
userFollowMapper.insertUserFocus(userId, userIdB,
Constant.A_FOLLOW_B, timeNow);
int temp = userFollowMapper.selectCount(userIdB);
ro.setData(temp);
HashMap map = new HashMap<>();
map.put("focusNums", temp);
ro.setData(map);
ro.setResultCode(ResultCode.SUCCESS);
}
ro.setResultMsg(ResultMsg.MSG_FOLLOW_SUCCESS);
} else {
// 取消关注
if (userFollow != null) {
// 相互关注
if (userFollow.getFollowFlag().equals(Constant.A_BOTH_B)) {
// 判断操作用户是否在A位置
int count = userFollowMapper.getUserIdPosition(userId,
userIdB);
// 如果关注者在A位置,被关注这在B位置,改为'01'
if (count > 0) {
userFollowMapper.updUserFocus(userId, userIdB,
Constant.B_FOLLOW_A, timeNow);
int temp = userFollowMapper.selectCount(userIdB);
HashMap map = new HashMap<>();
map.put("focusNums", temp);
ro.setData(map);
ro.setResultCode(ResultCode.SUCCESS);
} else {
// 如果关注者在B位置,被关注这在A位置,改为'00'
userFollowMapper.updUserFocus(userId, userIdB,
Constant.A_FOLLOW_B, timeNow);
int temp = userFollowMapper.selectCount(userIdB);
HashMap map = new HashMap<>();
map.put("focusNums", temp);
ro.setData(map);
ro.setResultCode(ResultCode.SUCCESS);
}
} else {
// 单方面关注,删除关系
userFollowMapper.deleteUserFocus(userId, userIdB);
int temp = userFollowMapper.selectCount(userIdB);
HashMap map = new HashMap<>();
map.put("focusNums", temp);
ro.setData(map);
ro.setResultCode(ResultCode.SUCCESS);
}
ro.setResultMsg(ResultMsg.MSG_CANCLE_FOLLOW_SUCCESS);
}
}
}
return ro;
}
}
Java相互关注_java --关注/取消关注相关推荐
- 微信公众平台开发教程Java版(六) 事件处理(菜单点击/关注/取消关注)
前言: 事件处理是非常重要的,这一章讲讲常见的事件处理 1.关注/取消关注 2.菜单点击 事件类型介绍: 在微信中有事件请求是消息请求中的一种.请求类型为:event 而event事件类型又分多种事件 ...
- 微信小程序实现关注与取消关注功能
一.数据库设计(3张) users_fans users表 mapper.xml设计: //增加粉丝数目<update id="addFansCount" parameter ...
- 菜单点击/关注/取消关注
事件处理是非常重要的,这一章讲讲常见的事件处理 1.关注/取消关注 2.菜单点击 事件类型介绍: 在微信中有事件请求是消息请求中的一种.请求类型为:event 而event事件类型又分多种事件类型,具 ...
- php 取消关注,用户关注、取消关注接口实现
交互原理 用户在关注与取消关注公众号时,微信会把这个事件推送到开发者填写的URL.方便开发者给用户下发欢迎消息或者做帐号的解绑. 微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次 ...
- (仿牛客社区项目)Java开发笔记4.4:实现关注、取消关注功能
实现关注.取消关注功能 1.util包 RedisKeyUtil类中添加getFollowerKey方法. package com.gerrard.community.util;public clas ...
- Java 微信关注/取消关注事件
Java 微信关注/取消关注事件 一.需求.思路 二.文档.配置 配置步骤1 配置步骤2 三.代码 1.引入依赖包 2.controller 3.封装消息对象 4.service.解密 5.工具包 一 ...
- java 微信接入 关注和取消关注
//最基础的servlet 进行接收 package com.cq.wechat;import java.io.IOException; import java.io.PrintWriter; imp ...
- 微信公众号关注/取消关注事件推送开发记录
一.奉上官方文档 关注/取消关注事件 | 微信开放文档微信开发者平台文档https://developers.weixin.qq.com/doc/offiaccount/Message_Managem ...
- 4-5:关注,取消关注
需求 开发关注.取消关注功能. 统计用户的关注数.粉丝数. 关键 若A关注了B,则A是B的Follower (粉丝),B是A的Followee (目标). 关注的目标可以是用户.帖子.题目等,在实现时 ...
- Spring项目接入微信关注/取消关注事件监控(含代码demo,自动回复图文)
微信官方文档地址:关注/取消关注事件 | 微信开放文档 以上,文档提到:用户在关注与取消关注公众号时,微信会把这个事件推送到开发者填写的URL,接下来我们就来看看这个URL怎么配置. [配置步骤]: ...
最新文章
- centos下axel安装与使用
- 各种flash的不同
- 35岁以后,不要成为程序员中的钻石
- 多变异位自适应遗传算法(MMAdapGA)的算法原理、算法步骤和matlab实现
- 【云栖大会】探索云时代下的游戏开发模式
- linux下解压.tar.bz2文件
- linux系统中如何查看日志 (常用命令2)
- Django-ORM数据库操作
- 最简单 NDK 样例
- Microsoft Deployment Toolkit 2008部署操作系统系列(一)
- wps个人免费版支持宏操作
- dhl:搜狗五笔输入法
- 三种时空模式下的全脑功能组织
- OpenCV识别图形以及常用函数处理
- php太平洋时间转成北京时间,太平洋时间和北京时间换算(太平洋时间现在几点)...
- 使用 matplotlib 绘制文氏图(venn)
- Leslie cheung's Speech
- MySQL主从复制以及会出现的幺蛾子问题、解决方法
- React基础(壹)———脚手架项目初始化
- c语言void结尾,C语言中void*详解及应用
热门文章
- PHP学习笔记(二)——行云博客
- 遭遇XP-664129A8.EXE
- 【SEED Labs 2.0】TCP Attacks Lab
- 【网络攻防技术】实验九——嗅探与欺骗实验
- shell中用grep查找并且不输出_grep无法查找shell传过来的变量?先注意一下文本格式吧!...
- 快播将关闭QVOD服务器 清理低俗内容与涉盗版内容
- Pale Moon 15.3 - Firefox“苍月”优化版发布
- 车载syu一android密码,教务系统找回密码
- golang 隐藏启动其他程序,包含cmd窗口(黑窗口)程序,GUI程序隐藏
- Glide4 设置默认图片和错误图片,即设置占位图