博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java --关注/取消关注
阅读量:6281 次
发布时间:2019-06-22

本文共 5077 字,大约阅读时间需要 16 分钟。

hot3.png

业务需求:A、B两个用户的关注/取消关注接口

1.接口文档如下

143645_Gi9e_2312022.jpg

2.数据库设计如下

143741_FfnK_2312022.jpg

3.数据库数据存放如下

143834_c7ZF_2312022.jpg

由数据库设计文档和数据库存放关系可知,

数据 1000000004 既可以在数据库的A位置,也可以在数据库的B位置。

3.该接口的webservice思路如下

关注/取消关注 用户的思路参数:用户A、用户B、关注/取消关注flagA和B的关系,假设A在数据库的A位置00 A关注B01 B关注A02 A、B相互关注备注:A在数据库的B位置时,如上关系为01、00、02思路如下:0.去数据库查询A、B这两个用户有没有关系(00/01/02)1.点击关注 --说明A和B的关系:1>没有关系;2>B关注A1-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的关系为被关注--即关系为012-3-2 如果A在数据库的B位置,则修改A和B的关系为被关注--即关系为00

4.该接口的java代码如下

@Servicepublic 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;    }}

转载于:https://my.oschina.net/u/2312022/blog/608361

你可能感兴趣的文章
Flex&Bison手册
查看>>
solrCloud+tomcat+zookeeper集群配置
查看>>
/etc/fstab,/etc/mtab,和 /proc/mounts
查看>>
Apache kafka 简介
查看>>
socket通信Demo
查看>>
技术人员的焦虑
查看>>
js 判断整数
查看>>
建设网站应该考虑哪些因素
查看>>
mongodb $exists
查看>>
js实现页面跳转的几种方式
查看>>
sbt笔记一 hello-sbt
查看>>
常用链接
查看>>
pitfall override private method
查看>>
!important 和 * ----hack
查看>>
聊天界面图文混排
查看>>
控件的拖动
查看>>
svn eclipse unable to load default svn client的解决办法
查看>>
Android.mk 文件语法详解
查看>>
QT liunx 工具下载
查看>>
内核源码树
查看>>