BD管理-英语区BD绑定

This commit is contained in:
2025-04-27 10:38:33 +08:00
parent 89485aafa5
commit a3b535ff14
2 changed files with 66 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
package com.accompany.admin.service.family;
import com.accompany.admin.model.AdminUser;
import com.accompany.admin.service.guild.BdInfoAdminService;
import com.accompany.admin.service.guild.GuildApplyAdminService;
import com.accompany.admin.service.system.AdminUserService;
import com.accompany.admin.vo.family.FamilyAdminVo;
@@ -12,6 +13,8 @@ import com.accompany.business.message.NewGuildMessage;
import com.accompany.business.model.family.*;
import com.accompany.business.service.UploadAvatarService;
import com.accompany.business.service.family.*;
import com.accompany.business.service.guild.BdGuildService;
import com.accompany.business.service.guild.BdInfoService;
import com.accompany.business.service.room.FamilyMemberRoomMicRecordService;
import com.accompany.business.service.user.UsersService;
import com.accompany.business.vo.family.FamilyMemberAdminVo;
@@ -74,6 +77,8 @@ public class FamilyManageAdminService {
private AdminUserService adminUserService;
@Autowired
private UploadAvatarService uploadAvatarService;
@Autowired
private BdInfoAdminService bdInfoAdminService;
@Transactional(rollbackFor = Exception.class)
public void createFamily(Long erbanNo, String referrer, Long inviteErbanNo) {
@@ -137,7 +142,9 @@ public class FamilyManageAdminService {
applicationContext.publishEvent(new FamilyMemberStatusChangeEvent(familyMember));
bdInfoAdminService.bindBdFamily(family, inviteUid);
familyMessageService.sendCreateSysMsgToFamilyOwner(family.getOwnerUid(), family.getName());
}
public void updateFamily(Integer id, String name,
@@ -540,6 +547,8 @@ public class FamilyManageAdminService {
familyMemberService.dismissMemberByFamilyId(family.getId(), now);
bdInfoAdminService.inValidBdGuildByGuild(family.getId());
for (FamilyMember member: familyMemberList){
member.setEnable(Boolean.FALSE);
applicationContext.publishEvent(new FamilyMemberStatusChangeEvent(member));

View File

@@ -4,6 +4,7 @@ package com.accompany.admin.service.guild;
import cn.hutool.core.date.DateUtil;
import com.accompany.admin.service.system.AdminUserService;
import com.accompany.business.model.UserInviteFissionRecord;
import com.accompany.business.model.family.Family;
import com.accompany.business.model.guild.BdGuild;
import com.accompany.business.model.guild.BdInfo;
import com.accompany.business.model.guild.Guild;
@@ -224,6 +225,37 @@ public class BdInfoAdminService {
.ifPresent(validBdInfo -> saveBdGuild(guild, validBdInfo));
}
/**
* 绑定BD优先填入邀请人然后才是邀请码邀请人
* @param guild
* @param inviteUid
*/
public void bindBdFamily(Family family, Long inviteUid) {
if (family == null || family.getId() == null) {
log.info("bindBdGuild error, guild null");
return;
}
// 1. 尝试用 inviteUid 绑定,成功则直接返回
boolean isBoundByInviteUid = Optional.ofNullable(inviteUid)
.map(bdInfoService::getValidByUid)
.map(validBdInfo -> {
saveBdFamily(family, validBdInfo);
return true; // 标记绑定成功
})
.orElse(false);
if (isBoundByInviteUid) {
return; // 已绑定,直接结束
}
// 2. 尝试用 ownerUid 的 inviterUid 绑定
Optional.ofNullable(family.getOwnerUid())
.map(userInviteFissionRecordService::getByUid)
.map(UserInviteFissionRecord::getInviterUid)
.map(bdInfoService::getValidByUid)
.ifPresent(validBdInfo -> saveBdFamily(family, validBdInfo));
}
/**
* 保存 BdGuild
*/
@@ -249,6 +281,31 @@ public class BdInfoAdminService {
bdGuildService.save(bdGuild);
}
/**
* 保存 BdGuild
*/
private void saveBdFamily(Family family, BdInfo bdInfo) {
BdGuild validByGuildAndBd = bdGuildService.getValidByGuildAndBd(bdInfo.getId(), family.getId());
if (validByGuildAndBd != null) {
log.info("bindBdGuild error, bdGuild exist");
return;
}
Users users = usersService.getUsersByUid(family.getOwnerUid());
Users bdUser = usersService.getUsersByUid(bdInfo.getUid());
if (!users.getPartitionId().equals(bdUser.getPartitionId())) {
log.info("bindBdGuild error, partitionId not equal,guild:{},bd:{}",
JSONObject.toJSONString(family), JSONObject.toJSONString(bdInfo));
return;
}
BdGuild bdGuild = new BdGuild();
bdGuild.setGuildId(family.getId());
bdGuild.setPartitionId(users.getPartitionId());
bdGuild.setBdId(bdInfo.getId());
bdGuild.setCreateTime(new Date());
bdGuild.setStatus(Constant.status.valid);
bdGuildService.save(bdGuild);
}
public void inValidBdGuildByGuild(Integer guildId) {
bdGuildService.inValidByGuildId(guildId);
}