public async Task <AjaxResult> Verify(BlogVerifyDto dto)
        {
            Check.NotNull(dto, nameof(dto));
            OperationResult result = await BlogsContract.VerifyBlog(dto);

            return(result.ToAjaxResult());
        }
Beispiel #2
0
        /// <summary>
        /// 审核博客信息
        /// </summary>
        /// <param name="dto">审核博客信息DTO信息</param>
        /// <returns>业务操作结果</returns>
        public virtual async Task <OperationResult> VerifyBlog(BlogVerifyDto dto)
        {
            Check.Validate(dto, nameof(dto));

            Blog blog = await BlogRepository.GetAsync(dto.Id);

            if (blog == null)
            {
                return(new OperationResult(OperationResultType.QueryNull, $"编号为“{dto.Id}”的博客信息不存在"));
            }

            // 更新博客
            blog.IsEnabled = dto.IsEnabled;
            int count = await BlogRepository.UpdateAsync(blog);

            //User user = await UserRepository.GetAsync(blog.UserId);
            //if (user == null)
            //{
            //    return new OperationResult(OperationResultType.QueryNull, $"编号为“{blog.UserId}”的用户信息不存在");
            //}

            // 如果开通博客,给用户开通博主身份
            if (dto.IsEnabled)
            {
                // 查找博客主的角色,博主角色名可由配置系统获得
                const string roleName = "博主";
                // 用于CUD操作的实体,要用 TrackQuery 方法来查询出需要的数据,不能用 Query,因为 Query 会使用 AsNoTracking
                //Role role = RoleRepository.TrackQuery(m => m.Name == roleName).FirstOrDefault();
                //if (role == null)
                //{
                //    return new OperationResult(OperationResultType.QueryNull, $"名称为“{roleName}”的角色信息不存在");
                //}

                //UserRole userRole = UserRoleRepository.TrackQuery(m => m.UserId == user.Id && m.RoleId == role.Id)
                //    .FirstOrDefault();
                //if (userRole == null)
                //{
                //    userRole = new UserRole() { UserId = user.Id, RoleId = role.Id, IsLocked = false };
                //    count += await UserRoleRepository.InsertAsync(userRole);
                //}
            }

            OperationResult result = count > 0
                ? new OperationResult(OperationResultType.Success, $"博客“{blog.Display}”审核 {(dto.IsEnabled ? "通过" : "未通过")},审核理由:{dto.Reason}")
                : OperationResult.NoChanged;

            if (result.Succeeded)
            {
                VerifyBlogEventData eventData = new VerifyBlogEventData()
                {
                    BlogName  = blog.Display,
                    UserName  = "******",
                    IsEnabled = blog.IsEnabled,
                    Reason    = dto.Reason
                };
                _eventBus.Publish(eventData);
            }

            return(result);
        }