Merge branch 'feature-nxdev' of https://gitea.nxsir.cn/code/IM into feature-nxdev
This commit is contained in:
@@ -215,6 +215,20 @@ namespace IM_API.Configs
|
||||
CreateMap<GroupMember, GroupMemberVo>()
|
||||
.ForMember(dest => dest.Created, opt => opt.MapFrom(src => src.Created))
|
||||
.ForMember(dest => dest.Role, opt => opt.MapFrom(src => src.RoleEnum));
|
||||
|
||||
//群更新模型
|
||||
|
||||
CreateMap<GroupUpdateDto, Group>()
|
||||
.ForMember(dest => dest.Avatar, opt => opt.MapFrom(src => src.Avatar))
|
||||
.ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.GroupName))
|
||||
.ForMember(dest => dest.Announcement, opt => opt.MapFrom(src => src.Description))
|
||||
.ForAllMembers(dest => dest.Ignore());
|
||||
|
||||
CreateMap<Group, GroupInfoVo>()
|
||||
.ForMember(dest => dest.Auhority, opt => opt.MapFrom(src => src.AuhorityEnum))
|
||||
.ForMember(dest => dest.AllMembersBanned, opt => opt.MapFrom(src => src.AllMembersBannedEnum))
|
||||
.ForMember(dest => dest.Status, opt => opt.MapFrom(src => src.StatusEnum))
|
||||
;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,5 +77,16 @@ namespace IM_API.Controllers
|
||||
var members = await _groupService.GetGroupMembers(int.Parse(useridStr), groupId);
|
||||
return Ok(new BaseResponse<List<GroupMemberVo>>(members));
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[ProducesResponseType(typeof(BaseResponse<GroupInfoVo>), StatusCodes.Status200OK)]
|
||||
|
||||
public async Task<IActionResult> UpdateGroup([FromQuery]int groupId, [FromBody]GroupUpdateDto dto)
|
||||
{
|
||||
var useridStr = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
||||
|
||||
var groupinfo = await _groupService.UpdateGroupInfoAsync(int.Parse(useridStr), groupId, dto);
|
||||
return Ok(new BaseResponse<GroupInfoVo>(groupinfo));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
namespace IM_API.Dtos.Group
|
||||
{
|
||||
public class GroupUpdateDto
|
||||
{
|
||||
public string? GroupName { get; set; }
|
||||
public string? Description { get; set; }
|
||||
public string? Avatar { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -53,5 +53,6 @@ namespace IM_API.Interface.Services
|
||||
Task MakeGroupRequestAsync(int userId,int? adminUserId,int groupId);
|
||||
Task MakeGroupMemberAsync(int userId, int groupId, GroupMemberRole? role);
|
||||
Task<List<GroupMemberVo>> GetGroupMembers(int userId, int groupId);
|
||||
Task<GroupInfoVo> UpdateGroupInfoAsync(int userId, int groupId, GroupUpdateDto updateDto);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -266,5 +266,31 @@ namespace IM_API.Services
|
||||
return user;
|
||||
}).ToList();
|
||||
}
|
||||
|
||||
public async Task<GroupInfoVo> UpdateGroupInfoAsync(int userId, int groupId, GroupUpdateDto updateDto)
|
||||
{
|
||||
//判断群存在
|
||||
var groupInfo = await _context.Groups.FirstOrDefaultAsync(x => x.Id == groupId);
|
||||
if (groupInfo is null)
|
||||
throw new BaseException(CodeDefine.GROUP_NOT_FOUND);
|
||||
|
||||
//判断操作者权限
|
||||
var memberInfo = await _context.GroupMembers
|
||||
.FirstOrDefaultAsync(x => x.UserId == userId && x.GroupId == groupId);
|
||||
|
||||
if (memberInfo is null || memberInfo.RoleEnum == GroupMemberRole.Normal)
|
||||
throw new BaseException(CodeDefine.NO_GROUP_PERMISSION);
|
||||
|
||||
groupInfo.Name = updateDto.GroupName ?? groupInfo.Name;
|
||||
groupInfo.Avatar = updateDto.Avatar ?? groupInfo.Avatar;
|
||||
groupInfo.Announcement = updateDto.Description ?? groupInfo.Announcement;
|
||||
|
||||
|
||||
_context.Groups.Update(groupInfo);
|
||||
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
return _mapper.Map<GroupInfoVo>(groupInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
using IM_API.Dtos.Group;
|
||||
|
||||
namespace IM_API.VOs.Group
|
||||
{
|
||||
public class GroupInfoVo:GroupInfoDto
|
||||
{
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user