init commit
This commit is contained in:
265
20220330_Vote/Ewide.RoadFlow/Serivce/Message/MessageService.cs
Normal file
265
20220330_Vote/Ewide.RoadFlow/Serivce/Message/MessageService.cs
Normal file
@@ -0,0 +1,265 @@
|
||||
using Ewide.Core;
|
||||
using Ewide.RoadFlowLite.Utility;
|
||||
using Furion.DatabaseAccessor;
|
||||
using Furion.DependencyInjection;
|
||||
using Furion.DynamicApiController;
|
||||
using Furion.FriendlyException;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using RoadFlow.Data;
|
||||
using RoadFlow.Utility;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.RoadFlowLite.Serivce.Message
|
||||
{
|
||||
[Route("/api/roadflow/Message/")]
|
||||
[ApiDescriptionSettings("RoadFlow")]
|
||||
public class MessageService : IDynamicApiController, ITransient
|
||||
{
|
||||
private readonly ILog _log;
|
||||
private readonly IUserManager _userManager;
|
||||
private readonly IMessage _message;
|
||||
private readonly IOrganize _organize;
|
||||
private readonly IMessageUser _messageUser;
|
||||
IRepository<SysUser> _sysUserRep;
|
||||
|
||||
public MessageService(
|
||||
ILog log,
|
||||
IUserManager userManager,
|
||||
IMessage message,
|
||||
IOrganize organize,
|
||||
IMessageUser messageUser,
|
||||
// IUserDummy userDummy,
|
||||
IRepository<SysUser> sysUserRep)
|
||||
{
|
||||
|
||||
_log = log;
|
||||
_userManager = userManager;
|
||||
_message = message;
|
||||
_organize = organize;
|
||||
_messageUser = messageUser;
|
||||
//_userDummy = userDummy;
|
||||
_sysUserRep = sysUserRep;
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 发送消息
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost("Send")]
|
||||
public string Send([FromBody] JObject args)
|
||||
{
|
||||
string ReceiverIdString = args.GetJsonValue("ReceiverIdString");
|
||||
string SendType = args.GetJsonValue("SendType");
|
||||
string Contents = args.GetJsonValue("Contents");
|
||||
|
||||
if (ReceiverIdString.IsNullOrWhiteSpace() || SendType.IsNullOrWhiteSpace() || Contents.IsNullOrWhiteSpace())
|
||||
{
|
||||
throw Oops.Oh("参数错误");
|
||||
//return RoadFlowCommon.Tools.GetReturnJsonString(false, localizer["ValidEmpty"].Value);
|
||||
}
|
||||
var userModel = _userManager.User;
|
||||
RoadFlow.Model.rf_message messageModel = new RoadFlow.Model.rf_message
|
||||
{
|
||||
Contents = Contents,
|
||||
Id = GuidExtensions.NewGuid().ToString(),
|
||||
ReceiverIdString = ReceiverIdString,
|
||||
SenderId = userModel.Id,
|
||||
SenderName = userModel.Name,
|
||||
SendType = SendType,
|
||||
SendTime = DateExtensions.Now,
|
||||
Type = 1
|
||||
};
|
||||
string msg = _message.VueSend(messageModel);
|
||||
if (msg == "1")
|
||||
return "发送成功";
|
||||
else
|
||||
throw Oops.Oh(msg);
|
||||
//RoadFlowCommon.Tools.GetReturnJsonString("1".Equals(msg), "1".Equals(msg) ? localizer["SendSuccessfully"].Value : msg);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 得到记录
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost("GetMessageList")]
|
||||
public dynamic GetMessageList([FromBody]JObject args)
|
||||
{
|
||||
string Contents = args.GetJsonValue("Contents");
|
||||
string SendTime1 = args.GetJsonValue("SendTime1");
|
||||
string SendTime2 = args.GetJsonValue("SendTime2");
|
||||
string status = args.GetJsonValue("status");//0自己发送的消息 1未读消息 2已读消息
|
||||
int number = args.GetJsonValue("number").ToInt(1);
|
||||
int size = args.GetJsonValue("size").ToInt();
|
||||
string order = args.GetJsonValue("order");
|
||||
if (order.IsNullOrWhiteSpace())
|
||||
{
|
||||
order = "SendTime desc";
|
||||
}
|
||||
string userId = _userManager.UserId;
|
||||
|
||||
var dt = _message.GetSendList(out int total, size, number, userId.ToString(), Contents, SendTime1, SendTime2, status, order);
|
||||
JArray jArray = new JArray();
|
||||
List<string> userids = new List<string>();
|
||||
foreach (var dr in dt)
|
||||
{
|
||||
JObject jObject = new JObject()
|
||||
{
|
||||
{ "Id", dr.Id },
|
||||
{ "Contents", dr.Contents.RemoveHTML() },
|
||||
{ "SenderName", dr.SenderName +","+dr.SenderId } ,//(dr.SenderId.IsGuid() ? "<span style=\"color:#999;\">-" + _organize.GetOrganizeMainShowHtml(dr.SenderId, false) + "</span>" : "") },
|
||||
{ "SendType", _message.GetSendTypeString(dr.SendType,null) },// localizer) },
|
||||
{ "SendTime", dr.SendTime.ToShortDateTimeString() },
|
||||
{ "LinkUrl", dr.Files},
|
||||
{ "Type", dr.Type},
|
||||
//{ "showLink", !dr["Files"].ToString().IsNullOrWhiteSpace() }
|
||||
};
|
||||
jArray.Add(jObject);
|
||||
userids.Add(dr.SenderId);
|
||||
}
|
||||
var dic =_organize.GetOrganizeMainShowHtml(userids, false);
|
||||
foreach (JObject obj in jArray)
|
||||
{
|
||||
string[] vals=obj["SenderName"].ToString().Split(",");
|
||||
if (!dic.ContainsKey(vals[1]))
|
||||
obj["SenderName"] = vals[0];
|
||||
else
|
||||
obj["SenderName"] = vals[0] + "<span style=\"color:#999;\">-" + dic[vals[1]] + "</span>";
|
||||
}
|
||||
JObject json = new JObject() {
|
||||
{ "total", total },
|
||||
};
|
||||
json.Add("rows", jArray);
|
||||
return json;
|
||||
//RoadFlowCommon.Tools.GetReturnJsonString(jObject: json);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 得到阅读记录
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost("GetMessageUserList")]
|
||||
public dynamic GetMessageUserList([FromBody] JObject args )
|
||||
{
|
||||
string msgId = args.GetJsonValue("msgid");
|
||||
string order = args.GetJsonValue("order");
|
||||
if (order.IsNullOrWhiteSpace())
|
||||
{
|
||||
order = "IsRead asc";
|
||||
}
|
||||
|
||||
var dt = _messageUser.GetReadUserList(out int total, 100000, 1, msgId, order);
|
||||
JArray jArray = new JArray();
|
||||
int i = 0;
|
||||
List<string> userids = new List<string>();
|
||||
foreach (var dr in dt)
|
||||
{
|
||||
JObject jObject = new JObject()
|
||||
{
|
||||
{ "Id", i++.ToString() },
|
||||
{ "UserId", dr.UserId },//+ "<span style=\"color:#999;\"> - "+_organize.GetOrganizeMainShowHtml(dr.UserId,false)+"</span>" },
|
||||
{ "ReadTime", dr.ReadTime!=null ? dr.ReadTime.ToShortDateTimeString() : "<span class=\"roadui_liststatus roadui_liststatusdisabled\">未读</span>" },
|
||||
};
|
||||
jArray.Add(jObject);
|
||||
userids.Add(dr.UserId);
|
||||
}
|
||||
var usrList=_sysUserRep.DetachedEntities.Where(x => userids.Contains(x.Id)).ToList();
|
||||
var dic = _organize.GetOrganizeMainShowHtml(userids, false);
|
||||
|
||||
foreach (JObject obj in jArray)
|
||||
{
|
||||
string id = obj["UserId"].ToString();
|
||||
obj["UserId"] = usrList.FirstOrDefault(x => x.Id == id).Name?? "" + (dic.ContainsKey(id)?"<span style=\"color:#999;\"> - " + dic[id]+ "</span>":"") ;
|
||||
}
|
||||
JObject json = new JObject() {
|
||||
{ "total", total },
|
||||
};
|
||||
json.Add("rows", jArray);
|
||||
return json;
|
||||
//RoadFlowCommon.Tools.GetReturnJsonString(jObject: json);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询一条消息
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("GetMessage")]
|
||||
|
||||
public dynamic GetMessage(string msgId, int type)
|
||||
{
|
||||
|
||||
var msgModel = _message.GetOneById(msgId);
|
||||
JObject jObject = new JObject();
|
||||
if (msgModel != null)
|
||||
{
|
||||
if (type == 1)//更新状态为已读
|
||||
{
|
||||
_messageUser.UpdateIsRead(msgModel.Id, _userManager.UserId);
|
||||
}
|
||||
jObject.Add("SenderName", msgModel.SenderName + (!msgModel.SenderId.IsNullOrWhiteSpace() ? "(" + _organize.GetOrganizeMainShowHtml(msgModel.SenderId, false) + ")" : ""));
|
||||
jObject.Add("SendTime", msgModel.SendTime.ToShortDateTimeString());
|
||||
jObject.Add("Contents", msgModel.Contents);
|
||||
}
|
||||
return jObject;
|
||||
//RoadFlowCommon.Tools.GetReturnJsonString(jObject: jObject);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 标记一条消息为已读
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("MarkAsReadOne")]
|
||||
public string MarkAsReadOne(string id)
|
||||
{
|
||||
if (!id.IsGuid(out Guid guid))
|
||||
{
|
||||
throw Oops.Oh("ID 错误");
|
||||
//return RoadFlowCommon.Tools.GetReturnJsonString(false, localizer["IdError"].Value);
|
||||
}
|
||||
_messageUser.UpdateIsRead(id,_userManager.UserId);
|
||||
return "标记成功";
|
||||
//RoadFlowCommon.Tools.GetReturnJsonString(true, localizer["MarkSuccessfully"].Value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 标记为已读
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("MarkAsRead")]
|
||||
public string MarkAsRead()
|
||||
{
|
||||
_messageUser.UpdateAllIsRead();
|
||||
return "标注成功";
|
||||
//RoadFlowCommon.Tools.GetReturnJsonString(true, localizer["MarkSuccessfully"].Value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除消息
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost("Delete")]
|
||||
public string Delete([FromBody] JObject args)
|
||||
{
|
||||
string ids = args.GetJsonValue("ids");
|
||||
List<string> guids = new List<string>();
|
||||
foreach (string id in ids.Split(','))
|
||||
{
|
||||
if (id.IsGuid())
|
||||
{
|
||||
guids.Add(id);
|
||||
}
|
||||
}
|
||||
_messageUser.Delete(guids, _userManager.UserId);
|
||||
return "删除成功";
|
||||
//RoadFlowCommon.Tools.GetReturnJsonString(true, localizer["DeleteSuccessfully"].Value);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user