diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application.Contracts/Dtos/Analyse/RegisterAnalyseDto.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application.Contracts/Dtos/Analyse/RegisterAnalyseDto.cs new file mode 100644 index 00000000..baa88cac --- /dev/null +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application.Contracts/Dtos/Analyse/RegisterAnalyseDto.cs @@ -0,0 +1,20 @@ +namespace Yi.Framework.Bbs.Application.Contracts.Dtos.Analyse; + +public class RegisterAnalyseDto +{ + public RegisterAnalyseDto(DateTime time, int number) + { + Time = time; + Number = number; + } + + /// + /// 时间 + /// + public DateTime Time { get; set; } + + /// + /// 人数 + /// + public int Number { get; set; } +} \ No newline at end of file diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/AccessLogService.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/AccessLogService.cs index 34917be8..b99e2980 100644 --- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/AccessLogService.cs +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/AccessLogService.cs @@ -48,12 +48,14 @@ namespace Yi.Framework.Bbs.Application.Services /// - /// 获取全部访问流量 + /// 获取全部访问流量(3个月) /// /// public async Task> Get() { - var entities = await _repository._DbQueryable.OrderBy(x => x.CreationTime).ToListAsync(); + var entities = await _repository._DbQueryable + .Where(x=>x.CreationTime>=DateTime.Now.AddMonths(-3)) + .OrderBy(x => x.CreationTime).ToListAsync(); var output = entities.Adapt>(); output?.ForEach(x => x.CreationTime = x.CreationTime.Date); return output; diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Analyses/BbsUserAnalyseService.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Analyses/BbsUserAnalyseService.cs index 429a86e9..1865860e 100644 --- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Analyses/BbsUserAnalyseService.cs +++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/Analyses/BbsUserAnalyseService.cs @@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Mvc; using SqlSugar; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; +using Yi.Framework.Bbs.Application.Contracts.Dtos.Analyse; using Yi.Framework.Bbs.Application.Contracts.Dtos.BbsUser; using Yi.Framework.Bbs.Domain.Entities; using Yi.Framework.Bbs.Domain.Entities.Integral; @@ -26,6 +27,59 @@ namespace Yi.Framework.Bbs.Application.Services.Analyses _onlineService = onlineService; } + + /// + /// 人数注册统计(近3个月) + /// + /// + /// + [HttpGet("analyse/bbs-user/register")] + public async Task> GetRegisterAsync([FromQuery] PagedResultRequestDto input) + + { + using (DataFilter.DisablePermissionHandler()) + { + var users = await _bbsUserManager._userRepository._DbQueryable + .Where(u=>u.CreationTime>=DateTime.Now.AddMonths(-3)) + .LeftJoin((u, info) => u.Id == info.UserId) + .Select((u, info) => new BbsUserGetListOutputDto() + { + Id = u.Id, + Icon = u.Icon, + Level = info.Level, + UserLimit = info.UserLimit, + Money = info.Money, + Experience = info.Experience, + CreationTime = u.CreationTime + }) + + .ToListAsync(); + + var minCreateUser = users.MinBy(x => x.CreationTime); + + var userCreateTimeDic = users.OrderBy(x => x.CreationTime) + .GroupBy(x => x.CreationTime.Date) + .ToDictionary(x => x.Key.Date, y => y.Count()); + + DateTime startDate = minCreateUser.CreationTime.Date; + DateTime endDate = DateTime.Today; + + List output = new List(); + + // 计算从起始日期到今天的所有天数 + for (DateTime date = startDate; date <= endDate; date = date.AddDays(1)) + { + var count = 0; + userCreateTimeDic.TryGetValue(date, out count); + RegisterAnalyseDto dayInfo = new RegisterAnalyseDto(date, count); + output.Add(dayInfo); + } + + return output; + } + } + + /// /// 财富排行榜 /// @@ -38,7 +92,7 @@ namespace Yi.Framework.Bbs.Application.Services.Analyses RefAsync total = 0; var output = await _bbsUserManager._userRepository._DbQueryable .LeftJoin((u, info) => u.Id == info.UserId) - .OrderByDescending((u,info) => info.Money) + .OrderByDescending((u, info) => info.Money) .Select((u, info) => new MoneyTopUserDto { @@ -51,7 +105,6 @@ namespace Yi.Framework.Bbs.Application.Services.Analyses Order = SqlFunc.RowNumber(u.Id) } ) - .ToPageListAsync(input.SkipCount, input.MaxResultCount, total); output.ForEach(x => { x.LevelName = _bbsUserManager._levelCacheDic[x.Level].Name; }); diff --git a/Yi.Bbs.Vue3/src/apis/analyseApi.js b/Yi.Bbs.Vue3/src/apis/analyseApi.js index 3f1cfbbf..2e582156 100644 --- a/Yi.Bbs.Vue3/src/apis/analyseApi.js +++ b/Yi.Bbs.Vue3/src/apis/analyseApi.js @@ -51,3 +51,17 @@ export function getUserAnalyse(data) { data, }); } + + +/** + * 获取注册数量用户分析 + * @param {*} data + * @returns + */ +export function getRegisterAnalyse(data) { + return request({ + url: "/analyse/bbs-user/register", + method: "get", + data, + }); +} \ No newline at end of file diff --git a/Yi.Bbs.Vue3/src/views/chathub/Index.vue b/Yi.Bbs.Vue3/src/views/chathub/Index.vue index 5f0e8623..8196c8e1 100644 --- a/Yi.Bbs.Vue3/src/views/chathub/Index.vue +++ b/Yi.Bbs.Vue3/src/views/chathub/Index.vue @@ -288,6 +288,20 @@ const onclickUserItem = (userInfo, itemType) => { changeInputValue(value); } +//输入框按键事件 +const handleKeydownInput=()=>{ + // 检查是否按下 Shift + Enter + if (event.key === 'Enter' && event.shiftKey) { + // 允许输入换行 + return; // 让默认行为继续 + } + + // 如果只按下 Enter,则阻止默认的提交行为,比如在表单中 + if (event.key === 'Enter') { + onclickSendMsg(); + } +} + //点击发送按钮 const onclickSendMsg = () => { if (currentInputValue.value == "") { @@ -389,7 +403,7 @@ const getLastMessage = ((receiveId, itemType) => {