using System.Collections.Generic;
using System.Threading.Tasks;
using Dapper;
using Datory;
using GxPress.Common.Tools;
using GxPress.EnumConst;
using GxPress.Request.Reply;
using GxPress.Result;
using GxPress.Result.Reply;
using Newtonsoft.Json;
namespace GxPress.Service.Implement.Reply
{
///
/// 回复笔记或者话题
///
public partial class ReplyService
{
///
/// 获取回复我的笔记或者话题
///
///
///
public async Task> GetReplyNoteOrTopicResults(ReplyRequest request)
{
var noteConstValue = AllTypeConst.TopicNote.GetHashCode();
string sqlStr = string.Empty;
if (!string.IsNullOrEmpty(request.KeyWord))
{
sqlStr = $@"AND (a.Content LIKE '%{request.KeyWord}%'
OR b.Title LIKE '%{request.KeyWord}%'
OR b.Content LIKE '%{request.KeyWord}%' or c.Name like '%{request.KeyWord}%')";
}
if (request.TypeValue == 0)
sqlStr = $@" and b.UserId = {request.UserId}";
else
sqlStr = $@" and a.UserId = {request.UserId}";
string sql = $@"
SELECT
a.Id,
a.UserId,
a.ArticleId as SourceId,
a.Content as CommentContent,
a.Pid,
a.TypeValue,
b.Title,
b.Content,
b.CreatedDate,
b.IsTopic,
c.Name,
c.AvatarUrl,
d.Name
FROM
tede_comment a
INNER JOIN
tede_note b ON a.ArticleId = b.Id
INNER JOIN
tede_user c ON c.Id = a.UserId
INNER JOIN
tede_user d ON d.Id = b.UserId
WHERE
1=1 AND a.TypeValue ={noteConstValue}
AND b.IsDelete = 0
and b.IsTopic=1
{sqlStr}
ORDER BY a.CreatedDate DESC
";
var database = new Database(DatabaseType.MySql, ConfigHelper.GetValue("Database:ConnectionString"));
var connection = database.GetConnection();
return await connection.QueryAsync(sql,
(result, note, user, userModel) =>
{
result.UserName = user != null ? user.Name : "";
result.AvatarUrl = StringUtils.AddDomainMin(user.AvatarUrl);
result.Title = string.IsNullOrEmpty(note.Title) ? GetTitleText(note.Content) : note.Title; ;
//result.Content = note.Content;
result.CreatedDate = note.CreatedDate;
result.Content = string.Empty;
result.Name = userModel.Name;
result.Remark =((AllTypeConst)result.TypeValue).GetDescriptionOriginal();
return result;
}, splitOn: "Id,Title,Name,Name");
}
///
/// 获取回复我的小组话题
///
///
///
public async Task> GetReplyGroupTopicResults(ReplyRequest request)
{
var topicConstValue = AllTypeConst.Topic.GetHashCode();
string sqlStr = string.Empty;
if (!string.IsNullOrEmpty(request.KeyWord))
{
sqlStr = $@" AND (c.Name LIKE '%{request.KeyWord}%'
OR a.Content LIKE '%{request.KeyWord}%'
OR b.Title LIKE '%{request.KeyWord}%'
OR b.Content LIKE '%{request.KeyWord}%')";
}
if (request.TypeValue == 0)
sqlStr = $@" and b.UserId = {request.UserId}";
else
sqlStr = $@" and a.UserId = {request.UserId}";
string sql = $@"
SELECT
a.Id,
a.UserId,
a.ArticleId AS SourceId,
a.Content AS CommentContent,
a.Pid,
a.TypeValue,
b.Title,
b.Content,
b.CreatedDate,
b.GroupId,
c.Name AS UserName,
c.AvatarUrl,
d.Name,
g.Id AS GroupId,
g.Name AS GroupName
FROM
tede_comment a
INNER JOIN
tede_topic b ON a.ArticleId = b.Id
INNER JOIN
tede_user c ON c.Id = a.UserId
INNER JOIN
tede_user d ON d.Id = b.UserId
INNER JOIN
tede_middle e ON e.MiddleId = b.Id
INNER JOIN
tede_group g ON g.id = b.GroupId
WHERE
1 = 1 AND a.TypeValue = {topicConstValue}
AND b.GroupId > 0
AND e.IsDelete = 0
AND a.Content <> ''
{sqlStr}
ORDER BY a.CreatedDate DESC
";
var database = new Database(DatabaseType.MySql, ConfigHelper.GetValue("Database:ConnectionString"));
var connection = database.GetConnection();
var result = await connection.QueryAsync(sql);
foreach (var item in result)
{
item.AvatarUrl = StringUtils.AddDomainMin(item.AvatarUrl);
item.Title = string.IsNullOrEmpty(item.Title) ? GetTitleText(item.Content) : item.Title; ;
//result.Content = note.Content;
item.Remark = item.GroupName;
item.Content = string.Empty;
item.IsGroup = true;
}
return result;
}
public string GetTitleText(string content)
{
var data = JsonConvert.DeserializeObject>(content);
int i = 0;
foreach (var item in data)
{
if (item.Type == AllTypeConst.Text.GetHashCode() && i == 0)
return item.Text;
else if (item.Type == AllTypeConst.Image.GetHashCode())
return "[图片]";
else if (item.Type == AllTypeConst.File.GetHashCode())
return "[附件]";
else
return "[附件]";
}
return string.Empty;
}
///
/// 获取回复我的通知站内信
///
///
///
public async Task> GetReplyNoticeTopicResults(ReplyRequest request)
{
string sqlStr = string.Empty;
if (!string.IsNullOrEmpty(request.KeyWord))
{
sqlStr = $@" AND (c.Name LIKE '%{request.KeyWord}%'
OR a.Content LIKE '%{request.KeyWord}%'
OR b.Title LIKE '%{request.KeyWord}%'
OR b.Content LIKE '%{request.KeyWord}%')";
}
if (request.TypeValue == 0)
sqlStr = $@" and b.UserId = {request.UserId}";
else
sqlStr = $@" and a.UserId = {request.UserId}";
string sql = $@"
SELECT
a.Id,
a.UserId,
a.ArticleId AS SourceId,
a.Content AS CommentContent,
a.Pid,
a.TypeValue,
b.Title,
b.Content,
b.CreatedDate,
c.Name AS UserName,
c.AvatarUrl,
d.Name
FROM
tede_comment a
INNER JOIN
tede_notice b ON a.ArticleId = b.Id
INNER JOIN
tede_user c ON c.Id = a.UserId
INNER JOIN
tede_user d ON d.Id = b.UserId
INNER JOIN
tede_middle e ON e.MiddleId = b.Id
WHERE
1 = 1
AND e.IsDelete = 0 and e.UserId=b.UserId
AND a.Content <> '' and a.TypeValue in(5,6)
{sqlStr}
ORDER BY a.CreatedDate DESC
";
var database = new Database(DatabaseType.MySql, ConfigHelper.GetValue("Database:ConnectionString"));
var connection = database.GetConnection();
var result = await connection.QueryAsync(sql);
foreach (var item in result)
{
item.AvatarUrl = StringUtils.AddDomainMin(item.AvatarUrl);
item.Title = string.IsNullOrEmpty(item.Title) ? GetTitleText(item.Content) : item.Title; ;
//result.Content = note.Content;
item.Remark = ((AllTypeConst)item.TypeValue).GetDescriptionOriginal();
item.Content = string.Empty;
}
return result;
}
}
}