From 98a4a2158a647e7b814808e2b8c521c34b79d7e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B7=B3?= <454313500@qq.com> Date: Wed, 17 Jan 2024 16:31:01 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E4=B8=AA=E4=BA=BA?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E8=B7=B3=E8=BD=AC=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dtos/Discuss/DiscussGetListInputVo.cs | 4 ++ .../IServices/IBbsUserInfoService.cs | 12 ++++++ .../Services/BbsUserInfoService.cs | 33 +++++++++++++++ .../Services/Forum/DiscussService.cs | 4 +- .../Managers/BbsUserManager.cs | 6 ++- .../IServices/IAccountService.cs | 5 ++- Yi.Bbs.Vue3/src/App.vue | 2 +- Yi.Bbs.Vue3/src/apis/userApi.js | 10 +++++ Yi.Bbs.Vue3/src/components/AvatarInfo.vue | 4 +- .../src/components/UserInfoCard/index.vue | 14 ++++--- Yi.Bbs.Vue3/src/hooks/useAuths.js | 9 +++- Yi.Bbs.Vue3/src/layout/AppHeader.vue | 2 +- Yi.Bbs.Vue3/src/router/index.js | 2 +- Yi.Bbs.Vue3/src/utils/signalR.js | 2 - Yi.Bbs.Vue3/src/views/profile/Index.vue | 41 +++++++++++-------- Yi.Bbs.Vue3/src/views/profile/UserAvatar.vue | 18 ++++++-- Yi.Bbs.Vue3/src/views/profile/UserInfo.vue | 14 ++++--- 17 files changed, 139 insertions(+), 43 deletions(-) create mode 100644 Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application.Contracts/IServices/IBbsUserInfoService.cs create mode 100644 Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/BbsUserInfoService.cs diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application.Contracts/Dtos/Discuss/DiscussGetListInputVo.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application.Contracts/Dtos/Discuss/DiscussGetListInputVo.cs index b715d9e4..4d420318 100644 --- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application.Contracts/Dtos/Discuss/DiscussGetListInputVo.cs +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application.Contracts/Dtos/Discuss/DiscussGetListInputVo.cs @@ -5,6 +5,10 @@ namespace Yi.Framework.Bbs.Application.Contracts.Dtos.Discuss { public class DiscussGetListInputVo : PagedAndSortedResultRequestDto { + /// + /// 创建者的用户名 + /// + public string? UserName { get; set; } public Guid? UserId { get; set; } public string? Title { get; set; } diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application.Contracts/IServices/IBbsUserInfoService.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application.Contracts/IServices/IBbsUserInfoService.cs new file mode 100644 index 00000000..d6a5f0c4 --- /dev/null +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application.Contracts/IServices/IBbsUserInfoService.cs @@ -0,0 +1,12 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Framework.Bbs.Application.Contracts.IServices +{ + public interface IBbsUserInfoService + { + } +} diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/BbsUserInfoService.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/BbsUserInfoService.cs new file mode 100644 index 00000000..50a92d5a --- /dev/null +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/BbsUserInfoService.cs @@ -0,0 +1,33 @@ +锘縰sing System.ComponentModel.DataAnnotations; +using Microsoft.AspNetCore.Mvc; +using TencentCloud.Ame.V20190916.Models; +using Volo.Abp.Application.Services; +using Yi.Framework.Bbs.Application.Contracts.IServices; +using Yi.Framework.Bbs.Domain.Managers; +using Yi.Framework.Rbac.Domain.Shared.Dtos; + +namespace Yi.Framework.Bbs.Application.Services +{ + public class BbsUserInfoService : ApplicationService, IBbsUserInfoService + { + private BbsUserManager _bbsUserManager; + public BbsUserInfoService(BbsUserManager bbsUserManager) + { + _bbsUserManager = bbsUserManager; + } + + [HttpGet("bbs-user/{userName}")] + public async Task GetUserInfoByUserNameAsync([FromRoute][Required] string userName) + { + + var userEntity = await _bbsUserManager._userRepository.GetFirstAsync(x => x.UserName == userName); + if (userEntity == null) + { + throw new Volo.Abp.UserFriendlyException("璇ョ敤鎴蜂笉瀛樺湪"); + } + var output =await _bbsUserManager.GetBbsUserInfoAsync(userEntity.Id); + + return output!; + } + } +} diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Forum/DiscussService.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Forum/DiscussService.cs index 95f362a9..7e1337cb 100644 --- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Forum/DiscussService.cs +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Forum/DiscussService.cs @@ -112,8 +112,10 @@ namespace Yi.Framework.Bbs.Application.Services.Forum .WhereIF(input.IsTop is not null, x => x.IsTop == input.IsTop) .WhereIF(input.UserId is not null,x=>x.CreatorId==input.UserId) .LeftJoin((discuss, user) => discuss.CreatorId == user.Id) - .LeftJoin((discuss, user, info) => user.Id == info.UserId) + .WhereIF(input.UserName is not null, (discuss, user)=>user.UserName==input.UserName!) + .LeftJoin((discuss, user, info) => user.Id == info.UserId) + .OrderByDescending(discuss => discuss.OrderNum) .OrderByIF(input.Type == QueryDiscussTypeEnum.New, discuss => discuss.CreationTime, OrderByType.Desc) .OrderByIF(input.Type == QueryDiscussTypeEnum.Host, discuss => discuss.SeeNum, OrderByType.Desc) diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BbsUserManager.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BbsUserManager.cs index fe1ebea1..31916865 100644 --- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BbsUserManager.cs +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/BbsUserManager.cs @@ -25,7 +25,11 @@ namespace Yi.Framework.Bbs.Domain.Managers public async Task GetBbsUserInfoAsync(Guid userId) { return await _userRepository._DbQueryable.LeftJoin((user, info) => user.Id == info.UserId) - .Select((user, info) => new BbsUserInfoDto { Id = user.Id ,Icon=user.Icon,Level=info.Level,UserLimit=info.UserLimit, + .Select((user, info) => new BbsUserInfoDto { + Id = user.Id , + Icon=user.Icon, + Level=info.Level, + UserLimit=info.UserLimit, Money = info.Money, Experience = info.Experience }, true) diff --git a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/IServices/IAccountService.cs b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/IServices/IAccountService.cs index ad1f80a7..ed337623 100644 --- a/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/IServices/IAccountService.cs +++ b/Yi.Abp.Net8/module/rbac/Yi.Framework.Rbac.Application.Contracts/IServices/IAccountService.cs @@ -1,6 +1,9 @@ -锘縩amespace Yi.Framework.Rbac.Application.Contracts.IServices +锘縰sing Yi.Framework.Rbac.Domain.Shared.Dtos; + +namespace Yi.Framework.Rbac.Application.Contracts.IServices { public interface IAccountService { + Task Get(); } } diff --git a/Yi.Bbs.Vue3/src/App.vue b/Yi.Bbs.Vue3/src/App.vue index 60f88d41..85ca157a 100644 --- a/Yi.Bbs.Vue3/src/App.vue +++ b/Yi.Bbs.Vue3/src/App.vue @@ -34,7 +34,7 @@ onMounted(async () => { watch( () => token, (val,oldValue) => { - console.log("token鍙戠敓鏀瑰彉"); + //console.log("token鍙戠敓鏀瑰彉"); if (val) { signalR.close(); signalR.init(`main`); diff --git a/Yi.Bbs.Vue3/src/apis/userApi.js b/Yi.Bbs.Vue3/src/apis/userApi.js index e646e71e..f38fc88c 100644 --- a/Yi.Bbs.Vue3/src/apis/userApi.js +++ b/Yi.Bbs.Vue3/src/apis/userApi.js @@ -9,6 +9,7 @@ export function listUser(query) { }); } + // 鏌ヨ鐢ㄦ埛璇︾粏 export function getUser(userId) { return request({ @@ -73,6 +74,15 @@ export function getUserProfile() { }); } +// 鏌ヨbbs涓汉淇℃伅 +export function getBbsUserProfile(userName) { + return request({ + url: `/bbs-user/${userName}`, + method: "get", + }); +} + + // 淇敼鐢ㄦ埛涓汉淇℃伅 export function updateUserProfile(data) { return request({ diff --git a/Yi.Bbs.Vue3/src/components/AvatarInfo.vue b/Yi.Bbs.Vue3/src/components/AvatarInfo.vue index 9ff83064..2eeeb495 100644 --- a/Yi.Bbs.Vue3/src/components/AvatarInfo.vue +++ b/Yi.Bbs.Vue3/src/components/AvatarInfo.vue @@ -34,7 +34,7 @@
V8 - 浼氬憳 + 鏍稿績
{ @@ -113,6 +114,7 @@ const Init = () => { userInfo.money=props.userInfo.money; userInfo.level = props.userInfo.level; userInfo.userLimit = props.userInfo.userLimit; + userInfo.userName= props.userInfo.userName; iconUrl.value = iconUrlHandler(userInfo.icon); } diff --git a/Yi.Bbs.Vue3/src/components/UserInfoCard/index.vue b/Yi.Bbs.Vue3/src/components/UserInfoCard/index.vue index 35cbc1e2..05376950 100644 --- a/Yi.Bbs.Vue3/src/components/UserInfoCard/index.vue +++ b/Yi.Bbs.Vue3/src/components/UserInfoCard/index.vue @@ -9,12 +9,12 @@ v-if="!props.isSelf" >
- +
@@ -64,7 +64,7 @@