Skip to content

Commit

Permalink
图床添加转存到图仓选项,迁移部分后台表格到新版
Browse files Browse the repository at this point in the history
  • Loading branch information
LittleFish-233 committed Aug 27, 2023
1 parent 5a6c6bc commit 8b751ee
Show file tree
Hide file tree
Showing 55 changed files with 1,633 additions and 1,562 deletions.

This file was deleted.

This file was deleted.

Expand Up @@ -8,6 +8,7 @@
using CnGalWebSite.DataModel.ViewModel.Admin;
using CnGalWebSite.DataModel.ViewModel.Files;
using CnGalWebSite.DrawingBed.Helper.Services;
using CnGalWebSite.DrawingBed.Models.ViewModels;
using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json.Linq;
using System.Collections.Concurrent;
Expand Down Expand Up @@ -50,39 +51,15 @@ public async Task<string> TransferDepositFile(string url)
{
try
{
if (string.IsNullOrWhiteSpace(url))
var result = await _httpService.GetAsync<UploadResult>(_configuration["ImageApiPath"]+ "api/files/TransferDepositToTucangCC?url=" + url);

if (result.Uploaded)
{
_logger.LogError("转存图片失败,图片为空");
return null;
}

if (url.Contains("http") == false)
{
url = "https:" + url;
}

var client = await _httpService.GetClientAsync();
using var content = new MultipartFormDataContent();
using var fileContent = new StreamContent(await client.GetStreamAsync(url));

content.Add(
content: fileContent,
name: "file",
fileName: "test.png");
content.Add(new StringContent(_configuration["TucangCCAPIToken"]), "token");

var response = await client.PostAsync(_configuration["TucangCCAPIUrl"], content);

var newUploadResults = await response.Content.ReadAsStringAsync();
var result = JObject.Parse(newUploadResults);

if (result["code"].ToObject<int>() == 200)
{
return $"{_configuration["CustomTucangCCUrl"]}{result["data"]["url"].ToObject<string>().Split('/').LastOrDefault()}?{url}";
return $"{result.Url}?{url}";
}
else
{
_logger.LogError("转存图片失败,接口返回代码:{code},消息:{msg},图片:{url}", result["code"].ToObject<int>(), result["msg"].ToObject<string>(), url);
_logger.LogError("转存图片({img})失败,{msg}",url,result.Error);
return null;
}

Expand Down
Expand Up @@ -51,7 +51,6 @@ public class AppHelper : IAppHelper
private readonly IRepository<Comment, long> _commentRepository;
private readonly IRepository<ApplicationUser, string> _userRepository;
private readonly IRepository<HistoryUser, int> _historyUserRepository;
private readonly IRepository<ErrorCount, long> _errorCountRepository;
private readonly IRepository<UserFile, int> _userFileRepository;
private readonly IRepository<BackUpArchive, long> _backUpArchiveRepository;
private readonly IRepository<BackUpArchiveDetail, long> _backUpArchiveDetailRepository;
Expand All @@ -68,7 +67,7 @@ public class AppHelper : IAppHelper
private readonly HttpClient _httpClient;

public AppHelper(IRepository<BackUpArchive, long> backUpArchiveRepository, IRepository<SignInDay, long> signInDayRepository, IRepository<BackUpArchiveDetail, long> backUpArchiveDetailRepository, IRepository<UserFile, int> userFileRepository,
IRepository<FavoriteFolder, long> favoriteFolderRepository, IRepository<ErrorCount, long> errorCountRepository, IRepository<HistoryUser, int> historyUserRepository, IRepository<ApplicationUser, string> userRepository,
IRepository<FavoriteFolder, long> favoriteFolderRepository, IRepository<HistoryUser, int> historyUserRepository, IRepository<ApplicationUser, string> userRepository,
IRepository<Comment, long> commentRepository, IConfiguration configuration, IRepository<Loginkey, long> loginkeyRepository,
IHttpClientFactory clientFactory, IRepository<FileManager, int> fileManagerRepository, IEmailService EmailService, IRepository<TokenCustom, int> tokenCustomRepository,
IRepository<Article, long> aricleRepository, IRepository<Entry, int> entryRepository, IRepository<SendCount, long> sendCountRepository, HttpClient httpClient,
Expand All @@ -89,7 +88,6 @@ public class AppHelper : IAppHelper
_commentRepository = commentRepository;
_examineRepository = examineRepository;
_historyUserRepository = historyUserRepository;
_errorCountRepository = errorCountRepository;
_backUpArchiveDetailRepository = backUpArchiveDetailRepository;
_backUpArchiveRepository = backUpArchiveRepository;
_userFileRepository = userFileRepository;
Expand Down Expand Up @@ -445,33 +443,6 @@ public async Task DeleteComment(long id)
return;
}

public async Task<bool> IsExceedMaxErrorCount(string text, int limit, int maxMinutes)
{
var timeNow = DateTime.Now.ToCstTime();
var errors = await _errorCountRepository.GetAll().CountAsync(s => s.Text == text && s.LastUpdateTime.AddMinutes(maxMinutes) > timeNow);
return errors >= limit;
}

public async Task AddErrorCount(string text)
{
_ = await _errorCountRepository.InsertAsync(new ErrorCount
{
LastUpdateTime = DateTime.Now.ToCstTime(),
Text = text
});
}

public async Task RemoveErrorCount(string text)
{
//查找是否存在计数器
var error = await _errorCountRepository.FirstOrDefaultAsync(s => s.Text == text);
if (error != null)
{
await _errorCountRepository.DeleteAsync(error);
return;
}
}

public async Task<bool> IsExceedMaxSendCount(string mail, int limit, int maxMinutes)
{
var timeNow = DateTime.Now.ToCstTime();
Expand Down Expand Up @@ -1086,48 +1057,5 @@ public async Task DeleteAllBackupInfor()
await _backUpArchiveDetailRepository.GetAll().Where(s => true).ExecuteDeleteAsync();
await _backUpArchiveRepository.GetAll().Where(s => true).ExecuteDeleteAsync();
}

public async Task<string> CheckStringCompliance(string text, string ip)
{
try
{
//检查是否超过上限
if (await IsExceedMaxErrorCount(ip, 5, 1))
{
return "请求验证用户名合规次数达到上限";
}

//初始化
var API_KEY = _configuration["BaiduAPIKey"];
var SECRET_KEY = _configuration["BaiduSecretKey"];

//获取令牌
var client = _clientFactory.CreateClient();
var jsonContent = await client.GetStringAsync("https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=" + API_KEY + "&client_secret=" + SECRET_KEY + "&");
var obj = JObject.Parse(jsonContent);
var access_token = obj["access_token"].ToString();


var token = access_token;
var host = "https://aip.baidubce.com/rest/2.0/solution/v1/text_censor/v2/user_defined?access_token=" + token + "&text=" + text;

jsonContent = await client.GetStringAsync(host);
obj = JObject.Parse(jsonContent);

var conclusion = obj["conclusion"].ToString();



//增加审核次数
await AddErrorCount(ip);

return conclusion == "合规" ? null : "文本存在敏感词";
}
catch (Exception)
{
return "请求审核文本失败";
}

}
}
}
Expand Up @@ -120,26 +120,6 @@ public interface IAppHelper
/// <returns></returns>
Task DeleteComment(long id);
/// <summary>
/// 判断用户错误次数是否超过上限
/// </summary>
/// <param name="text">唯一标识符</param>
/// <param name="limit">限制次数</param>
/// <param name="maxMinutes">限制时间</param>
/// <returns></returns>
Task<bool> IsExceedMaxErrorCount(string text, int limit, int maxMinutes);
/// <summary>
/// 增加错误次数
/// </summary>
/// <param name="text">唯一标识符</param>
/// <returns></returns>
Task AddErrorCount(string text);
/// <summary>
/// 移除计数器
/// </summary>
/// <param name="text">唯一标识符</param>
/// <returns></returns>
Task RemoveErrorCount(string text);
/// <summary>
/// 判断是否通过人机验证
/// </summary>
/// <param name="challenge"></param>
Expand Down Expand Up @@ -244,13 +224,6 @@ public interface IAppHelper
/// <returns></returns>
Task DeleteAllBackupInfor();
/// <summary>
/// 检查文本是否合规
/// </summary>
/// <param name="text">文本</param>
/// <param name="ip">请求的ip</param>
/// <returns></returns>
Task<string> CheckStringCompliance(string text, string ip);
/// <summary>
/// 将markdown转化为html
/// </summary>
/// <param name="str"></param>
Expand Down
@@ -1,6 +1,5 @@
using BootstrapBlazor.Components;
using CnGalWebSite.DataModel.Model;
using CnGalWebSite.DataModel.ViewModel.Admin;
using CnGalWebSite.DataModel.ViewModel.Lotteries;
using CnGalWebSite.DataModel.ViewModel.OperationRecords;
using System.Threading.Tasks;
Expand All @@ -11,8 +10,6 @@ public interface ILotteryService
{
Task SendPrizeToWinningUser(LotteryUser user, LotteryAward award);

Task<QueryData<ListLotteryAloneModel>> GetPaginatedResult(CnGalWebSite.DataModel.ViewModel.Search.QueryPageOptions options, ListLotteryAloneModel searchModel);

Task<QueryData<ListLotteryUserAloneModel>> GetPaginatedResult(CnGalWebSite.DataModel.ViewModel.Search.QueryPageOptions options, ListLotteryUserAloneModel searchModel, long lotteryId);

Task DrawAllLottery();
Expand Down
Expand Up @@ -5,7 +5,6 @@
using CnGalWebSite.APIServer.DataReositories;
using CnGalWebSite.DataModel.Helper;
using CnGalWebSite.DataModel.Model;
using CnGalWebSite.DataModel.ViewModel.Admin;
using CnGalWebSite.DataModel.ViewModel.Lotteries;
using CnGalWebSite.DataModel.ViewModel.OperationRecords;
using Microsoft.AspNetCore.Http;
Expand Down Expand Up @@ -55,74 +54,6 @@ public class LotteryService : ILotteryService
_playedGameRepository = playedGameRepository;
_logger = logger;
}
public Task<QueryData<ListLotteryAloneModel>> GetPaginatedResult(CnGalWebSite.DataModel.ViewModel.Search.QueryPageOptions options, ListLotteryAloneModel searchModel)
{
var items = _lotteryRepository.GetAll().Where(s => string.IsNullOrWhiteSpace(s.Name) == false).AsNoTracking();
// 处理高级搜索
if (!string.IsNullOrWhiteSpace(searchModel.Name))
{
items = items.Where(item => item.Name.Contains(searchModel.Name, StringComparison.OrdinalIgnoreCase));
}
if (!string.IsNullOrWhiteSpace(searchModel.BriefIntroduction))
{
items = items.Where(item => item.BriefIntroduction.Contains(searchModel.BriefIntroduction, StringComparison.OrdinalIgnoreCase));
}



// 处理 SearchText 模糊搜索
if (!string.IsNullOrWhiteSpace(options.SearchText))
{
items = items.Where(item => item.Name.Contains(options.SearchText)
|| item.BriefIntroduction.Contains(options.SearchText));
}


// 排序
var isSorted = false;
if (!string.IsNullOrWhiteSpace(options.SortName))
{
items = items.OrderBy(s => s.Id).Sort(options.SortName, (BootstrapBlazor.Components.SortOrder)options.SortOrder);
isSorted = true;
}

// 设置记录总数
var total = items.Count();

// 内存分页
var list = items.Skip((options.PageIndex - 1) * options.PageItems).Take(options.PageItems).ToList();

//复制数据
var resultItems = new List<ListLotteryAloneModel>();
foreach (var item in list)
{
resultItems.Add(new ListLotteryAloneModel
{
Id = item.Id,
Name = item.Name,
IsHidden = item.IsHidden,
BriefIntroduction = _appHelper.GetStringAbbreviation(item.BriefIntroduction, 20),
Priority = item.Priority,
LastEditTime = item.LastEditTime,
ReaderCount = item.ReaderCount,
CanComment = item.CanComment ?? true,
CommentCount = item.CommentCount,
BeginTime = item.BeginTime,
EndTime = item.EndTime,
Type = item.Type,
IsEnd = item.IsEnd,
LotteryTime = item.LotteryTime,
});
}

return Task.FromResult(new QueryData<ListLotteryAloneModel>()
{
Items = resultItems,
TotalCount = total,
IsSorted = isSorted,
// IsFiltered = isFiltered
});
}

public Task<QueryData<ListLotteryUserAloneModel>> GetPaginatedResult(CnGalWebSite.DataModel.ViewModel.Search.QueryPageOptions options, ListLotteryUserAloneModel searchModel, long lotteryId)
{
Expand Down

0 comments on commit 8b751ee

Please sign in to comment.