用户关注推送消息

This commit is contained in:
tianfeng 2025-10-17 12:07:30 +08:00
parent 03131de124
commit 0d6b5919af
6 changed files with 48 additions and 1 deletions

View File

@ -190,7 +190,14 @@ public enum OfficialNoticeTypeEnum {
/**
* 用户告白
*/
USER_CONFESSION;
USER_CONFESSION,
/**
* 用户关注
*/
USER_FOLLOW
;
public String getTitle(Locale locale) {

View File

@ -221,6 +221,9 @@ public enum UserErrorCode implements IResponseErrorCode {
// 密码不正确
,PASSWORD_NOT_MATCH(4074, "password is incorrect")
// 用户已关注
,USER_FOLLOWED(4075, "This user has followed"),
;

View File

@ -85,6 +85,11 @@ public class UserSupportRelationRestController extends BaseController {
return userRelationInterviewService.followOrCancel(cmd);
}
@PostMapping("/follow-new")
public Boolean follow(@RequestBody @Validated AppUserIdCmd cmd) {
return userRelationInterviewService.follow(cmd);
}
/**
* 我的关注列表.
*

View File

@ -2,10 +2,15 @@ package com.red.circle.other.app.command.user;
import com.red.circle.common.business.dto.cmd.app.AppUserIdCmd;
import com.red.circle.external.inner.endpoint.message.ImGroupClient;
import com.red.circle.external.inner.endpoint.message.OfficialNoticeClient;
import com.red.circle.external.inner.model.cmd.message.GroupUnbanCmd;
import com.red.circle.external.inner.model.cmd.message.notice.official.NoticeExtTemplateTypeCmd;
import com.red.circle.external.inner.model.enums.message.OfficialNoticeTypeEnum;
import com.red.circle.framework.core.asserts.ResponseAssert;
import com.red.circle.framework.core.response.CommonErrorCode;
import com.red.circle.mq.rocket.business.producer.TaskMqMessage;
import com.red.circle.other.app.convertor.user.UserProfileAppConvertor;
import com.red.circle.other.app.util.OfficialNoticeUtils;
import com.red.circle.other.domain.gateway.user.UserProfileGateway;
import com.red.circle.other.domain.gateway.user.ability.UserRelationsCalculatorGateway;
import com.red.circle.other.domain.model.user.ability.UserRelationsCalculator;
@ -19,6 +24,7 @@ import com.red.circle.other.infra.database.rds.service.user.user.RelationshipFri
import com.red.circle.other.infra.database.rds.service.user.user.ShieldBlackService;
import com.red.circle.other.infra.database.rds.service.user.user.UserSubscriptionService;
import com.red.circle.other.inner.asserts.user.UserRelationErrorCode;
import com.red.circle.other.inner.model.dto.user.UserProfileDTO;
import com.red.circle.tool.core.date.TimestampUtils;
import com.red.circle.tool.core.text.StringUtils;
import com.red.circle.other.inner.asserts.user.UserErrorCode;
@ -45,6 +51,8 @@ public class UserSupportRelationFollowOrCancelCmdExe {
private final ImGroupClient imGroupClient;
private final ShieldBlackService shieldBlackService;
private final RoomUserBlacklistService roomUserBlacklistService;
private final UserProfileAppConvertor userProfileAppConvertor;
private final OfficialNoticeClient officialNoticeClient;
private final RoomProfileManagerService roomProfileManagerService;
private final RelationshipFriendService relationshipFriendService;
@ -57,6 +65,15 @@ public class UserSupportRelationFollowOrCancelCmdExe {
: subscription(cmd);
}
public Boolean follow(AppUserIdCmd cmd) {
// 不可操作自己
ResponseAssert.notEquals(UserErrorCode.NOT_OPERATION_ME, cmd.requiredReqUserId(),cmd.getUserId());
boolean checkedSubscription = userSubscriptionService.checkSubscription(cmd.requiredReqUserId(), cmd.getUserId());
ResponseAssert.isFalse(UserErrorCode.USER_FOLLOWED, checkedSubscription);
return subscription(cmd);
}
private Boolean subscription(AppUserIdCmd cmd) {
// 无法操作错误归属
@ -111,6 +128,14 @@ public class UserSupportRelationFollowOrCancelCmdExe {
roomUserBlacklistService.removeBlack(roomProfile.getId(), cmd.requiredReqUserId());
}
}
} else {
UserProfileDTO userProfile = userProfileAppConvertor.toUserProfileDTO(userProfileGateway.getByUserId(cmd.requiredReqUserId()));
officialNoticeClient.send(NoticeExtTemplateTypeCmd.builder()
.toAccount(cmd.getUserId())
.noticeType(OfficialNoticeTypeEnum.USER_FOLLOW)
.templateParam(OfficialNoticeUtils.buildUserProfile(userProfile))
.build()
);
}
return Boolean.TRUE;

View File

@ -53,6 +53,11 @@ public class UserSupportRelationServiceImpl implements UserSupportRelationServic
return userSupportRelationFollowOrCancelCmdExe.execute(cmd);
}
@Override
public Boolean follow(AppUserIdCmd cmd) {
return userSupportRelationFollowOrCancelCmdExe.follow(cmd);
}
@Override
public List<UserSupportRelationCO> listUserFollow(AppFlowCmd cmd) {
return userRelationFollowQryExe.execute(cmd);

View File

@ -22,6 +22,8 @@ public interface UserSupportRelationService {
Boolean followOrCancel(AppUserIdCmd cmd);
Boolean follow(AppUserIdCmd cmd);
List<UserSupportRelationCO> listUserFollow(AppFlowCmd cmd);
Boolean checkFollow(AppUserIdCmd cmd);