|
@@ -770,7 +770,7 @@ public class FamilyMemberService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 更新成员信息
|
|
|
|
|
|
|
+ * 更新成员信息:管理员可编辑所有成员(含关联账号的),普通用户仅可编辑不可登录成员
|
|
|
*/
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public FamilyMemberVO updateMember(Long userId, Long memberId, AddFamilyMemberDTO dto) {
|
|
public FamilyMemberVO updateMember(Long userId, Long memberId, AddFamilyMemberDTO dto) {
|
|
@@ -778,19 +778,22 @@ public class FamilyMemberService {
|
|
|
if (user == null || user.getFamilyId() == null) {
|
|
if (user == null || user.getFamilyId() == null) {
|
|
|
throw new RuntimeException("用户未加入家庭");
|
|
throw new RuntimeException("用户未加入家庭");
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
FamilyMember member = familyMemberMapper.selectById(memberId);
|
|
FamilyMember member = familyMemberMapper.selectById(memberId);
|
|
|
if (member == null || !member.getFamilyId().equals(user.getFamilyId())) {
|
|
if (member == null || !member.getFamilyId().equals(user.getFamilyId())) {
|
|
|
throw new RuntimeException("成员不存在或不属于您的家庭");
|
|
throw new RuntimeException("成员不存在或不属于您的家庭");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 检查编辑权限
|
|
|
|
|
- if (!isEditable(memberId)) {
|
|
|
|
|
|
|
+ // 检查编辑权限:管理员可编辑所有成员;普通用户只能编辑无关联账号的成员
|
|
|
|
|
+ boolean isAdmin = false;
|
|
|
|
|
+ Family family = familyMapper.selectById(user.getFamilyId());
|
|
|
|
|
+ if (family != null && Long.valueOf(userId).equals(family.getCreatorId())) {
|
|
|
|
|
+ isAdmin = true;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!isAdmin && !isEditable(memberId)) {
|
|
|
throw new RuntimeException("该成员关联了登录账号,不可编辑");
|
|
throw new RuntimeException("该成员关联了登录账号,不可编辑");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
String oldNickname = member.getNickname();
|
|
String oldNickname = member.getNickname();
|
|
|
-
|
|
|
|
|
if (dto.getNickname() != null && !dto.getNickname().trim().isEmpty()) {
|
|
if (dto.getNickname() != null && !dto.getNickname().trim().isEmpty()) {
|
|
|
member.setNickname(dto.getNickname().trim());
|
|
member.setNickname(dto.getNickname().trim());
|
|
|
}
|
|
}
|
|
@@ -811,11 +814,18 @@ public class FamilyMemberService {
|
|
|
throw new IllegalArgumentException("出生日期格式错误,应为yyyy-MM-dd");
|
|
throw new IllegalArgumentException("出生日期格式错误,应为yyyy-MM-dd");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+ // 管理员可更新辈分关系
|
|
|
|
|
+ if (isAdmin && dto.getGenerationLevel() != null && !dto.getGenerationLevel().trim().isEmpty()) {
|
|
|
|
|
+ GenerationLevel genLevel = GenerationLevel.fromValue(dto.getGenerationLevel());
|
|
|
|
|
+ if (genLevel != null) {
|
|
|
|
|
+ member.setGeneration(genLevel.getOffset());
|
|
|
|
|
+ boolean isSpouse = genLevel == GenerationLevel.PEER && "spouse".equals(dto.getPeerType());
|
|
|
|
|
+ member.setIsSpouse(isSpouse);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
member.setUpdatedAt(new Date());
|
|
member.setUpdatedAt(new Date());
|
|
|
familyMemberMapper.updateById(member);
|
|
familyMemberMapper.updateById(member);
|
|
|
logMemberAction(member.getFamilyId(), member.getId(), "update", oldNickname, member.getNickname(), userId);
|
|
logMemberAction(member.getFamilyId(), member.getId(), "update", oldNickname, member.getNickname(), userId);
|
|
|
-
|
|
|
|
|
return toFamilyMemberVO(member);
|
|
return toFamilyMemberVO(member);
|
|
|
}
|
|
}
|
|
|
|
|
|