public ResModel AddOperationLog(OperationLogDto operationLogDto, UserDto operationUser) { using (var db = new ModelContext()) { var operationLog = new OperationLog() { Id = Guid.NewGuid(), OperationUserId = operationUser.Id, ModuleName = operationLogDto.ModuleName, OperationDesc = operationLogDto.OperationDesc, OperationTime = operationLogDto.OperationTime, IpAddress = operationLogDto.IpAddress }; try { db.OperationLog.Add(operationLog); db.SaveChanges(); } catch (Exception e) { return(new ResModel() { Msg = "添加操作日志失败", Success = false }); } return(new ResModel() { Msg = "添加操作日志成功", Success = true }); } }
public async Task <(string Message, bool?IsSuccess)> ChangeTopicType(int topicId, TopicType topicType, OperationLogDto logDto) { try { var conn = _context.GetDbConnection(); var rows = await conn.ExecuteAsync("UPDATE phpbb_topics SET topic_type = @topicType WHERE topic_id = @topicId", new { topicType, topicId }); if (rows == 1) { await _operationLogService.LogModeratorTopicAction((ModeratorTopicActions)logDto.Action !, logDto.UserId, topicId); return(LanguageProvider.Moderator[GetLanguage(), "TOPIC_CHANGED_SUCCESSFULLY"], true); } else { return(string.Format(LanguageProvider.Moderator[GetLanguage(), "TOPIC_DOESNT_EXIST_FORMAT"], topicId), false); } } catch (Exception ex) { var id = Utils.HandleError(ex); return(string.Format(LanguageProvider.Errors[GetLanguage(), "AN_ERROR_OCCURRED_TRY_AGAIN_ID_FORMAT"], id), false); } }
public async Task <(string Message, bool?IsSuccess)> MoveTopic(int topicId, int destinationForumId, OperationLogDto logDto) { try { var conn = _context.GetDbConnection(); var topicRows = await conn.ExecuteAsync( "UPDATE phpbb_topics SET forum_id = @destinationForumId WHERE topic_id = @topicID AND EXISTS(SELECT 1 FROM phpbb_forums WHERE forum_id = @destinationForumId)", new { topicId, destinationForumId } ); if (topicRows == 0) { return(LanguageProvider.Moderator[GetLanguage(), "DESTINATION_DOESNT_EXIST"], false); } var oldPosts = (await conn.QueryAsync <PhpbbPosts>("SELECT * FROM phpbb_posts WHERE topic_id = @topicId ORDER BY post_time DESC", new { topicId })).AsList(); var oldForumId = oldPosts.FirstOrDefault()?.ForumId ?? 0; await conn.ExecuteAsync( "UPDATE phpbb_posts SET forum_id = @destinationForumId WHERE topic_id = @topicId; " + "UPDATE phpbb_topics_track SET forum_id = @destinationForumId WHERE topic_id = @topicId", new { destinationForumId, topicId } ); foreach (var post in oldPosts) { await _postService.CascadePostDelete(post, true, true); post.ForumId = destinationForumId; await _postService.CascadePostAdd(post, true); } await _operationLogService.LogModeratorTopicAction(ModeratorTopicActions.MoveTopic, logDto.UserId, topicId, $"Moved from {oldForumId} to {destinationForumId}."); return(LanguageProvider.Moderator[GetLanguage(), "TOPIC_CHANGED_SUCCESSFULLY"], true); } catch (Exception ex) { var id = Utils.HandleError(ex); return(string.Format(LanguageProvider.Errors[GetLanguage(), "AN_ERROR_OCCURRED_TRY_AGAIN_ID_FORMAT"], id), false); } }
public async Task <(string Message, bool?IsSuccess)> RemoveShortcut(int topicId, int forumId, OperationLogDto logDto) { var lang = GetLanguage(); try { var conn = _context.GetDbConnection(); var curShortcut = await conn.QueryFirstOrDefaultAsync <PhpbbShortcuts>( "SELECT * FROM phpbb_shortcuts WHERE topic_id = @topicId", new { topicId }); if (curShortcut is null) { return(string.Format(LanguageProvider.Moderator[lang, "SHORTCUT_DOESNT_EXIST_FORMAT"], topicId, forumId), false); } if (curShortcut.ForumId != forumId) { return(LanguageProvider.Moderator[lang, "INVALID_SHORTCUT_SELECTED"], false); } await _context.GetDbConnection().ExecuteAsync( "DELETE FROM phpbb_shortcuts WHERE topic_id = @topicId AND forum_id = @forumId", new { topicId, forumId }); await _operationLogService.LogModeratorTopicAction(ModeratorTopicActions.CreateShortcut, logDto.UserId, topicId); return(LanguageProvider.Moderator[lang, "SHORTCUT_DELETED_SUCCESSFULLY"], true); } catch (Exception ex) { var id = Utils.HandleError(ex); return(string.Format(LanguageProvider.Errors[lang, "AN_ERROR_OCCURRED_TRY_AGAIN_ID_FORMAT"], id), false); } }
public async Task <(string Message, bool?IsSuccess)> SplitPosts(int[] postIds, int?destinationForumId, OperationLogDto logDto) { try { if ((destinationForumId ?? 0) == 0) { return(LanguageProvider.Moderator[GetLanguage(), "INVALID_DESTINATION_FORUM"], false); } if (!(postIds?.Any() ?? false)) { return(LanguageProvider.Moderator[GetLanguage(), "ATLEAST_ONE_POST_REQUIRED"], false); } var conn = _context.GetDbConnection(); var posts = (await conn.QueryAsync <PhpbbPosts>("SELECT * FROM phpbb_posts WHERE post_id IN @postIds ORDER BY post_time", new { postIds })).AsList(); if (posts.Count != postIds.Length) { return(LanguageProvider.Moderator[GetLanguage(), "ATLEAST_ONE_POST_MOVED_OR_DELETED"], false); } var curTopic = await conn.QueryFirstOrDefaultAsync <PhpbbTopics>( "INSERT INTO phpbb_topics (forum_id, topic_title, topic_time) VALUES (@forumId, @title, @time); " + "SELECT * FROM phpbb_topics WHERE topic_id = LAST_INSERT_ID();", new { forumId = destinationForumId !.Value, title = posts.First().PostSubject, time = posts.First().PostTime } ); var oldTopicId = posts.First().TopicId; await conn.ExecuteAsync("UPDATE phpbb_posts SET topic_id = @topicId, forum_id = @forumId WHERE post_id IN @postIds", new { curTopic.TopicId, curTopic.ForumId, postIds }); foreach (var post in posts) { await _postService.CascadePostDelete(post, false, true); post.TopicId = curTopic.TopicId; post.ForumId = curTopic.ForumId; await _postService.CascadePostAdd(post, false); await _operationLogService.LogModeratorPostAction(ModeratorPostActions.SplitSelectedPosts, logDto.UserId, post.PostId, $"Split from topic {oldTopicId} as new topic in forum {destinationForumId}"); } return(LanguageProvider.Moderator[GetLanguage(), "POSTS_SPLIT_SUCCESSFULLY"], true); }
public ResModel AddOperationLog(OperationLogDto operationLogDto, UserDto operationUser) { return(_operationLogRepository.AddOperationLog(operationLogDto, operationUser)); }
public async Task <(string Message, bool?IsSuccess)> DeleteTopic(int topicId, OperationLogDto logDto) { try { var conn = _context.GetDbConnection(); var posts = (await conn.QueryAsync <PhpbbPosts>("SELECT * FROM phpbb_posts WHERE topic_id = @topicId", new { topicId })).AsList(); if (!posts.Any()) { return(string.Format(LanguageProvider.Moderator[GetLanguage(), "TOPIC_DOESNT_EXIST_FORMAT"], topicId), false); } var topic = await conn.QueryFirstOrDefaultAsync <PhpbbTopics>("SELECT * FROM phpbb_topics WHERE topic_id = @topicId", new { topicId }); if (topic != null) { var dto = new TopicDto { ForumId = topic.ForumId, TopicId = topic.TopicId, TopicTitle = topic.TopicTitle, TopicStatus = topic.TopicStatus, TopicType = topic.TopicType, TopicLastPosterColour = topic.TopicLastPosterColour, TopicLastPosterId = topic.TopicLastPosterId, TopicLastPosterName = topic.TopicLastPosterName, TopicLastPostId = topic.TopicLastPostId, TopicLastPostTime = topic.TopicLastPostTime, Poll = await _postService.GetPoll(topic) }; await conn.ExecuteAsync( "INSERT INTO phpbb_recycle_bin(type, id, content, delete_time, delete_user) VALUES (@type, @id, @content, @now, @userId)", new { type = RecycleBinItemType.Topic, id = topic.TopicId, content = await Utils.CompressObject(dto), now = DateTime.UtcNow.ToUnixTimestamp(), logDto.UserId } ); await conn.ExecuteAsync( "DELETE FROM phpbb_topics WHERE topic_id = @topicId; " + "DELETE FROM phpbb_poll_options WHERE topic_id = @topicId", new { topicId } ); } await DeletePostsCore(posts, logDto, false); await _operationLogService.LogModeratorTopicAction(ModeratorTopicActions.DeleteTopic, logDto.UserId, topicId); return(LanguageProvider.Moderator[GetLanguage(), "TOPIC_DELETED_SUCCESSFULLY"], true); } catch (Exception ex) { var id = Utils.HandleError(ex); return(string.Format(LanguageProvider.Errors[GetLanguage(), "AN_ERROR_OCCURRED_TRY_AGAIN_ID_FORMAT"], id), false); } }
protected void PreInvoke(object instance, object[] inputs) { switch (m_InteType) { case EnumInterception.None: break; case EnumInterception.LogOperation: { var tempList = inputs.ToList(); if (m_IgnoreType == EnumIgnoreInterception.Password) { try { switch (m_FunctionName.ToLower()) { case "consologin": case "login": tempList.RemoveAt(2); break; case "buyinsurancebycashbycarrier": tempList.RemoveAt(1); break; case "buyinsurancebycashorcredit": tempList.RemoveAt(3); break; case "payorderbycashbagaccount": tempList.RemoveAt(1); break; case "payorderbycreditaccount": tempList.RemoveAt(1); break; case "saleorderpaybycashbagaccount": tempList.RemoveAt(1); break; case "saleorderpaybycreditaccount": tempList.RemoveAt(1); break; case "changepassword": tempList.RemoveAt(1); tempList.RemoveAt(2); break; case "buysmsbyaccount": tempList.RemoveAt(3); break; case "alipaybind": tempList.RemoveAt(1); break; case "alipayunbind": tempList.RemoveAt(0); break; case "alipaysignrecharge": tempList.RemoveAt(1); break; case "alipaysignrepay": tempList.RemoveAt(1); break; case "payorderbyquikalipay": tempList.RemoveAt(1); break; } } catch (Exception ex) { Logger.WriteLog(LogType.ERROR, ex.Message); } } var log = new OperationLogDto { CreateTime = DateTime.Now, FunctionDescription = m_FunctionDescription, FunctionName = m_FunctionName, ModuleFullName = instance.ToString(), RequestParams = tempList.ToJson(), OperatorAcount = AuthManager.GetCurrentUser() == null ? "" : AuthManager.GetCurrentUser().OperatorAccount, BusinessCode = AuthManager.GetCurrentUser() == null ? "" : AuthManager.GetCurrentUser().Code, BusinessName = AuthManager.GetCurrentUser() == null ? "" : AuthManager.GetCurrentUser().BusinessmanName, }; Task.Factory.StartNew(() => QueueLogsManager.Enqueue(log)); //var sb = new StringBuilder(); //sb.Append("\n请求时间:" + DateTime.Now); //sb.Append("\n服务名称:" + instance); //sb.Append("\n函数描述:" + m_FunctionDescription); //sb.Append("\n函数名称:" + m_FunctionName); //sb.Append("\n请求参数:" + tempList.ToJson()); //if (AuthManager.GetCurrentUser() != null) //{ // sb.Append("\n操作人:" + AuthManager.GetCurrentUser().Code); //} //Console.WriteLine(sb.ToString()); } break; case EnumInterception.LogException: break; } }
/// <summary> /// 日志入队列 /// </summary> /// <param name="log"></param> public static void Enqueue(OperationLogDto log) { _queueExt.Enqueue(log); }
/// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> /// <returns>Success</returns> /// <exception cref="ApiException">A server side error occurred.</exception> public async System.Threading.Tasks.Task <OperationLogDto> UpdateAsync(OperationLogDto input, System.Threading.CancellationToken cancellationToken) { var urlBuilder_ = new System.Text.StringBuilder(); urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/api/services/app/OperationLog/Update"); var client_ = _httpClient; try { using (var request_ = new System.Net.Http.HttpRequestMessage()) { var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(input, _settings.Value)); content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); request_.Content = content_; request_.Method = new System.Net.Http.HttpMethod("PUT"); request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); PrepareRequest(client_, request_, urlBuilder_); var url_ = urlBuilder_.ToString(); request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); PrepareRequest(client_, request_, url_); var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); try { var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); if (response_.Content != null && response_.Content.Headers != null) { foreach (var item_ in response_.Content.Headers) { headers_[item_.Key] = item_.Value; } } ProcessResponse(client_, response_); var status_ = ((int)response_.StatusCode).ToString(); if (status_ == "200") { var objectResponse_ = await ReadObjectResponseAsync <OperationLogDto>(response_, headers_).ConfigureAwait(false); return(objectResponse_.Object); } else if (status_ != "200" && status_ != "204") { var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false); throw new ApiException("The HTTP status code of the response was not expected (" + (int)response_.StatusCode + ").", (int)response_.StatusCode, responseData_, headers_, null); } return(default(OperationLogDto)); } finally { if (response_ != null) { response_.Dispose(); } } } } finally { } }
/// <returns>Success</returns> /// <exception cref="ApiException">A server side error occurred.</exception> public System.Threading.Tasks.Task <OperationLogDto> UpdateAsync(OperationLogDto input) { return(UpdateAsync(input, System.Threading.CancellationToken.None)); }
public void Add(OperationLogDto log) { var m = Mapper.Map <OperationLogDto, OperationLog>(log); _operationLogDomainService.AddLog(m); }