147 lines
4.7 KiB
C#
147 lines
4.7 KiB
C#
using Infrastructure.Attribute;
|
|
using Mapster;
|
|
using DOAN.Model;
|
|
using DOAN.Model.Content.Dto;
|
|
using DOAN.Model.Dto;
|
|
using DOAN.Repository;
|
|
|
|
namespace DOAN.ServiceCore.Services
|
|
{
|
|
/// <summary>
|
|
/// 用户系统消息Service业务层处理
|
|
/// </summary>
|
|
[AppService(ServiceType = typeof(ISysUserMsgService), ServiceLifetime = LifeTime.Transient)]
|
|
public class SysUserMsgService : BaseService<SysUserMsg>, ISysUserMsgService
|
|
{
|
|
/// <summary>
|
|
/// 查询用户系统消息列表
|
|
/// </summary>
|
|
/// <param name="parm"></param>
|
|
/// <returns></returns>
|
|
public PagedInfo<SysUserMsgDto> GetList(SysUserMsgQueryDto parm)
|
|
{
|
|
var predicate = QueryExp(parm);
|
|
|
|
if (parm.MsgType == UserMsgType.COMMENT || parm.MsgType == UserMsgType.PRAISE)
|
|
{
|
|
return Queryable()
|
|
.Where(predicate.ToExpression())
|
|
.Includes(x => x.User)
|
|
.Select((it) => new SysUserMsgDto()
|
|
{
|
|
User = it.User.Adapt<UserDto>()
|
|
}, true)
|
|
.ToPage(parm);
|
|
}
|
|
else
|
|
{
|
|
return Queryable()
|
|
.Where(predicate.ToExpression())
|
|
.Select(it => new SysUserMsgDto()
|
|
{
|
|
|
|
}, true)
|
|
.ToPage(parm);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 已读消息
|
|
/// </summary>
|
|
/// <param name="userId"></param>
|
|
/// <param name="msgId"></param>
|
|
/// <param name="msgType"></param>
|
|
/// <returns></returns>
|
|
public int ReadMsg(long userId, long msgId, UserMsgType msgType)
|
|
{
|
|
if (msgId == 0)
|
|
{
|
|
return Update(f => f.UserId == userId && f.MsgType == msgType, it => new SysUserMsg() { IsRead = 1 });
|
|
}
|
|
return Update(f => f.UserId == userId && f.MsgId == msgId, it => new SysUserMsg() { IsRead = 1 });
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取详情
|
|
/// </summary>
|
|
/// <param name="MsgId"></param>
|
|
/// <returns></returns>
|
|
public SysUserMsg GetInfo(long MsgId)
|
|
{
|
|
var response = Queryable()
|
|
.Where(x => x.MsgId == MsgId)
|
|
.First();
|
|
|
|
return response;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 添加用户系统消息
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <returns></returns>
|
|
public SysUserMsg AddSysUserMsg(SysUserMsg model)
|
|
{
|
|
Insertable(model).ExecuteReturnSnowflakeId();
|
|
return model;
|
|
}
|
|
public SysUserMsg AddSysUserMsg(long userId, string content, UserMsgType msgType)
|
|
{
|
|
return AddSysUserMsg(new SysUserMsg()
|
|
{
|
|
UserId = userId,
|
|
Content = content,
|
|
MsgType = msgType
|
|
});
|
|
}
|
|
|
|
/// <summary>
|
|
/// 清空用户系统消息
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public bool TruncateSysUserMsg()
|
|
{
|
|
var newTableName = $"sys_user_msg_{DateTime.Now:yyyyMMdd}";
|
|
if (Queryable().Any() && !Context.DbMaintenance.IsAnyTable(newTableName))
|
|
{
|
|
Context.DbMaintenance.BackupTable("sys_user_msg", newTableName);
|
|
}
|
|
|
|
return Truncate();
|
|
}
|
|
/// <summary>
|
|
/// 导出用户系统消息
|
|
/// </summary>
|
|
/// <param name="parm"></param>
|
|
/// <returns></returns>
|
|
public PagedInfo<SysUserMsgDto> ExportList(SysUserMsgQueryDto parm)
|
|
{
|
|
var predicate = QueryExp(parm);
|
|
|
|
var response = Queryable()
|
|
.Where(predicate.ToExpression())
|
|
.Select((it) => new SysUserMsgDto()
|
|
{
|
|
}, true)
|
|
.ToPage(parm);
|
|
|
|
return response;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 查询导出表达式
|
|
/// </summary>
|
|
/// <param name="parm"></param>
|
|
/// <returns></returns>
|
|
private static Expressionable<SysUserMsg> QueryExp(SysUserMsgQueryDto parm)
|
|
{
|
|
var predicate = Expressionable.Create<SysUserMsg>();
|
|
|
|
predicate = predicate.AndIF(parm.UserId != null, it => it.UserId == parm.UserId);
|
|
predicate = predicate.AndIF(parm.IsRead != null, it => it.IsRead == parm.IsRead);
|
|
predicate = predicate.AndIF(parm.MsgType != null, it => it.MsgType == parm.MsgType);
|
|
//predicate = predicate.AndIF(parm.ClassifyId != null, it => it.ClassifyId == parm.ClassifyId);
|
|
return predicate;
|
|
}
|
|
}
|
|
} |