Java相互关注_java --关注/取消关注

本文介绍了一个Java实现的用户关注/取消关注接口。详细讲述了接口设计、数据库设计、逻辑处理,包括关注时的关系判断与转换、取消关注时的状态更新,并提供了具体的Java代码实现。

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

1.接口文档如下

a16fe1d13d9dd8dfad789458884edcd7.png

2.数据库设计如下

09e8b42be56c7dd0960307c6bb399fb1.png

3.数据库数据存放如下

c9a03798d69be7f6bd7922430dd6da05.png

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

数据 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;

}

}

构建进程终止异常: E:\java1.8\bin\java.exe -Xmx700m -Djava.awt.headless=true "-Djna.boot.library.path=E:\java\IntelliJ IDEA 2023.3.5/lib/jna/amd64" -Djna.nosys=true -Djna.noclasspath=true --add-opens jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-opens jdk.compiler/com.sun.tools.javac.jvm=ALL-UNNAMED -Dexternal.project.config=C:\Users\Lenovo\AppData\Local\JetBrains\IntelliJIdea2023.3\projects\idea.f91729a5\external_build_system -Dcompile.parallel=false -Drebuild.on.dependency.change=true -Didea.IntToIntBtree.page.size=32768 -Djdt.compiler.useSingleThread=true -Daether.connector.resumeDownloads=false -Dio.netty.initialSeedUniquifier=-6547451398445050958 -Dfile.encoding=GBK -Duser.language=zh -Duser.country=CN -Didea.paths.selector=IntelliJIdea2023.3 -Djps.language.bundle=C:/Users/Lenovo/AppData/Roaming/JetBrains/IntelliJIdea2023.3/plugins/zh.233.407/lib/zh.233.407.jar "-Didea.home.path=E:/java/IntelliJ IDEA 2023.3.5" -Didea.config.path=C:/Users/Lenovo/AppData/Roaming/JetBrains/IntelliJIdea2023.3 -Didea.plugins.path=C:/Users/Lenovo/AppData/Roaming/JetBrains/IntelliJIdea2023.3/plugins -Djps.log.dir=C:/Users/Lenovo/AppData/Local/JetBrains/IntelliJIdea2023.3/log/build-log "-Djps.fallback.jdk.home=E:/java/IntelliJ IDEA 2023.3.5/jbr" -Djps.fallback.jdk.version=17.0.12 -Dio.netty.noUnsafe=true -Djava.io.tmpdir=C:/Users/Lenovo/AppData/Local/JetBrains/IntelliJIdea2023.3/compile-server/idea_984e7b7b/_temp_ -Djps.backward.ref.index.builder=true "-Djps.kotlin.home=E:\java\IntelliJ IDEA 2023.3.5\plugins\Kotlin\kotlinc" -Dkotlin.incremental.compilation=true -Dkotlin.incremental.compilation.js=true -Dkotlin.daemon.enabled -Dkotlin.daemon.client.alive.path=\"C:\Users\Lenovo\AppData\Local\Temp\kotlin-idea-5634865019928609788-is-running\" -Dide.propagate.context=false -classpath "E:/java/IntelliJ IDEA 2023.3.5/plugins/java/lib/jps-launcher.jar" org.jetbrains.jps.cmdline.Launcher "E:/java/IntelliJ IDEA 2023.3.5/plugins/java/lib/jps-builders.jar;E:/java/IntelliJ IDEA 2023.3.5/plugins/java/lib/jps-builders-6.jar;E:/java/IntelliJ IDEA 2023.3.5/plugins/java/lib/jps-javac-extension.jar;E:/java/IntelliJ IDEA 2023.3.5/lib/util-8.jar;E:/java/IntelliJ IDEA 2023.3.5/lib/util_rt.jar;E:/java/IntelliJ IDEA 2023.3.5/lib/platform-loader.jar;E:/java/IntelliJ IDEA 2023.3.5/lib/annotations.jar;E:/java/IntelliJ IDEA 2023.3.5/lib/protobuf.jar;E:/java/IntelliJ IDEA 2023.3.5/lib/jps-model.jar;E:/java/IntelliJ IDEA 2023.3.5/plugins/java/lib/javac2.jar;E:/java/IntelliJ IDEA 2023.3.5/lib/forms_rt.jar;E:/java/IntelliJ IDEA 2023.3.5/lib/util.jar;E:/java/IntelliJ IDEA 2023.3.5/plugins/java/lib/aether-dependency-resolver.jar;E:/java/IntelliJ IDEA 2023.3.5/plugins/java/lib/maven-resolver-connector-basic.jar;E:/java/IntelliJ IDEA 2023.3.5/plugins/java/lib/maven-resolver-transport-file.jar;E:/java/IntelliJ IDEA 2023.3.5/plugins/java/lib/maven-resolver-transport-http.jar;E:/java/IntelliJ IDEA 2023.3.5/lib/idea_rt.jar;E:/java/IntelliJ IDEA 2023.3.5/plugins/JavaEE/lib/jasper-v2-rt.jar;E:/java/IntelliJ IDEA 2023.3.5/plugins/Kotlin/lib/jps/kotlin-jps-plugin.jar;E:/java/IntelliJ IDEA 2023.3.5/lib/util-8.jar;E:/java/IntelliJ IDEA 2023.3.5/plugins/eclipse/lib/eclipse-jps.jar;E:/java/IntelliJ IDEA 2023.3.5/plugins/eclipse/lib/eclipse-common.jar;E:/java/IntelliJ IDEA 2023.3.5/plugins/JavaEE/lib/javaee-jps.jar;E:/java/IntelliJ IDEA 2023.3.5/plugins/uiDesigner/lib/jps/java-guiForms-jps.jar;E:/java/IntelliJ IDEA 2023.3.5/plugins/platform-langInjection/lib/java-langInjection-jps.jar;E:/java/IntelliJ IDEA 2023.3.5/plugins/javaFX/lib/javaFX-jps.jar;E:/java/IntelliJ IDEA 2023.3.5/plugins/javaFX/lib/javaFX-common.jar;E:/java/IntelliJ IDEA 2023.3.5/plugins/Groovy/lib/groovy-jps.jar;E:/java/IntelliJ IDEA 2023.3.5/plugins/Groovy/lib/groovy-constants-rt.jar;E:/java/IntelliJ IDEA 2023.3.5/plugins/maven/lib/maven-jps.jar;E:/java/IntelliJ IDEA 2023.3.5/plugins/space/lib/space-java-jps.jar;E:/java/IntelliJ IDEA 2023.3.5/plugins/gradle-java/lib/gradle-jps.jar;E:/java/IntelliJ IDEA 2023.3.5/plugins/JPA/lib/jps/javaee-jpa-jps.jar" org.jetbrains.jps.cmdline.BuildMain 127.0.0.1 53139 40546632-3c73-4430-899a-82e079fccf6b C:/Users/Lenovo/AppData/Local/JetBrains/IntelliJIdea2023.3/compile-server Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. Unrecognized option: --add-opens
最新发布
06-21
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值