using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using YiSha.Data;
using YiSha.Data.Repository;
using YiSha.Entity.ZX;
using YiSha.Entity.ZxOrTkMenuManagerModels;
using YiSha.Enum;
using YiSha.Enum.ZX;
using YiSha.IService.ZX;
using YiSha.Model.Param.ZX;
using YiSha.Model.Result.ZX;
using YiSha.Util;
using YiSha.Util.Extension;
using YiSha.Util.Model;
using YiSha.Web.Code;
namespace YiSha.Service.ZX
{
///
/// 创 建:cmzx
/// 日 期:2021-04-16 15:00
/// 描 述:资讯文章服务实现类(部分类)
///
public partial class NewManagerModelService
{
private IRepositoryFactory _baseRepository;
private IMenuManagerModelsService _managerModelsService;
public NewManagerModelService(IRepositoryFactory baseRepository, IMenuManagerModelsService managerModelsService)
{
_baseRepository = baseRepository;
_managerModelsService = managerModelsService;
}
///
/// 获取分页数据
///
/// 请求参数
/// 分页条件
///
public async Task> GetPageListPartial(NewManagerModelListParam param, Pagination pagination)
{
var parameters = new List();
var sql = SqlPageList(param, pagination, out parameters);
var list = await _baseRepository.BaseRepository(dbConnectType).FindList(sql, parameters.ToArray());
return list.ToList();
}
///
/// 获取分页数据
///
/// 请求参数
/// 分页条件
///
public async Task> GetPublishNumberPageListJson(NewContentPublishNumberListParam param, Pagination pagination)
{
var parameters = new List();
var sql = SqlPublishNumberPageList(param, pagination, out parameters);
var list = await _baseRepository.BaseRepository(dbConnectType).FindList(sql, parameters.ToArray());
return list.ToList();
}
///
/// 保存数据(由于之前数据库设计不规范,无法实现在新增、修改时保存正确的操作用户信息,每张表的创建时间和创建人id、创建人姓名都不一样,且这些字段是必填项)
///
/// 实体参数
///
public async Task SaveFormPartial(NewManagerModelEntity entity)
{
OperatorInfo user = await Operator.Instance.Current(entity.Token);
if (entity.Id.IsNullOrZero())
{
entity.createTime = DateTime.Now;
entity.createUserId = user?.UserId;
//entity.createUserName = user?.UserName;
var zxId = await _baseRepository.BaseRepository(dbConnectType).Insert(entity);
if (zxId > 0 && int.TryParse(entity.menuId?.ToString(), out var menuId))
{
var zxMenu = await _managerModelsService.GetEntity(menuId);
if (int.TryParse(zxMenu?.parentId?.ToString(), out var parentId) && ZxCzTemplateTypeHelper.dict.ContainsKey(parentId))
{
var type = ZxCzTemplateTypeHelper.dict[parentId];
//描述信息
string[] arrtributeText = type.GetEnumText();
entity.IsGenerated = true;
entity.SourceUrl = string.Format("/{0}/{1}.htm", arrtributeText[1] + "/" + zxMenu.Shorthand, entity.Id);
await _baseRepository.BaseRepository(dbConnectType).Update(entity);
}
//await Save7167New(entity, zxMenu.menuName);
}
return zxId;
}
else
{
if (int.TryParse(entity.menuId?.ToString(), out var menuId))
{
var zxMenu = await _managerModelsService.GetEntity(menuId);
if (int.TryParse(zxMenu?.parentId?.ToString(), out var parentId) && ZxCzTemplateTypeHelper.dict.ContainsKey(parentId))
{
var type = ZxCzTemplateTypeHelper.dict[parentId];
//描述信息
string[] arrtributeText = type.GetEnumText();
entity.IsGenerated = true;
entity.SourceUrl = string.Format("/{0}/{1}.htm", arrtributeText[1] + "/" + zxMenu.Shorthand, entity.Id);
}
}
return await _baseRepository.BaseRepository(dbConnectType).Update(entity);
}
}
public async Task Save7167New(NewManagerModelEntity newModel,string menuName)
{
try
{
newModel.Id = 0;
//获取菜单信息
var menuid = await _baseRepository.BaseRepository(DBConnectTypeEnum.Zx7167DB).FindEntity(x => x.menuName == menuName);
newModel.menuId = menuid?.Id;
newModel.labelId = 0;
newModel.sortNo = 0;
newModel.descriptionElement = newModel.descriptionElement.Replace("彩吧资讯", "快乐彩").Replace("http://zx.55128.cn", "http://zx.7167.com");
var zxId = await _baseRepository.BaseRepository(DBConnectTypeEnum.Zx7167DB).Insert(newModel);
if (zxId > 0 && int.TryParse(newModel.menuId?.ToString(), out var menuId))
{
//var zxMenu = await _managerModelsService.GetEntity(menuId);
if (int.TryParse(menuid?.parentId?.ToString(), out var parentId) && ZxCzTemplateTypeHelper.dict.ContainsKey(parentId))
{
var type = ZxCzTemplateTypeHelper.dict[parentId];
//描述信息
string[] arrtributeText = type.GetEnumText();
newModel.IsGenerated = true;
newModel.SourceUrl = string.Format("/{0}/{1}.htm", arrtributeText[1] + "/" + menuid.Shorthand, newModel.Id);
await _baseRepository.BaseRepository(DBConnectTypeEnum.Zx7167DB).Update(newModel);
}
}
}
catch (Exception ex)
{
throw;
}
}
#region 私有方法
///
/// 列表条件过滤
/// 建议该方法放在Partial部分类中,因为代码生成时当前类会被覆盖(该方法在生成时将会被注释)
///
///
///
private Expression> ListFilterPartial(NewManagerModelListParam param)
{
var expression = LinqExtensions.True();
if (param != null)
{
}
return expression;
}
///
/// 获取分页Sql语句
///
///
///
private string SqlPageList(NewManagerModelListParam param, Pagination pagination, out List parameters)
{
parameters = new List();
var where = new StringBuilder();
where.Append(" 1 = 1 ");
if (param != null)
{
if (!string.IsNullOrEmpty(param.Title))
{
where.Append(" and nmm.title like @Title ");
parameters.Add(DbParameterExtension.CreateDbParameter("@Title", $"%{param.Title}%", dbConnectType));
}
if (!string.IsNullOrEmpty(param.Qi))
{
where.Append(" and nmm.periodsNumber like @Qi ");
parameters.Add(DbParameterExtension.CreateDbParameter("@Qi", $"%{param.Qi}%", dbConnectType));
}
if (!string.IsNullOrEmpty(param.CreateUserName))
{
where.Append(" and nmm.createUserName = @CreateUserName ");
parameters.Add(DbParameterExtension.CreateDbParameter("@CreateUserName", param.CreateUserName, dbConnectType));
}
if (param.MenuId != null && param.MenuId > 0)
{
where.Append(" and nmm.menuId = @MenuId ");
parameters.Add(DbParameterExtension.CreateDbParameter("@MenuId", param.MenuId, dbConnectType));
}
var noticeMenuIds = new List() { 108, 110, 111 };
if (param.NoticeOrArticleType == MenuNoticeOrArticleTypeEnum.公告类型)
{
//公告类型只需要menuId为108、110、111的数据
where.Append(" and (nmm.menuId = 108 or nmm.menuId = 110 or nmm.menuId = 111) ");
}
//if (!string.IsNullOrEmpty(param.MenuName))
//{
// where.Append(" and mmm.menuName like @MenuName ");
// parameters.Add(DbParameterExtension.CreateDbParameter("@MenuName", $"%{param.MenuName}%", dbConnectType));
//}
}
//获取分页数据Sql
var pageSql = $@"select nmm.*,mmm.menuName,ls.labelName
from newManagerModels nmm
left join menuManagerModels mmm on nmm.menuId = mmm.id
left join LabelModels ls on nmm.labelId = ls.id
where {where.ToString()}";
//统计总数据Sql
var totalSql = $@"select count(1)
from newManagerModels nmm
left join menuManagerModels mmm on nmm.menuId = mmm.id
left join LabelModels ls on nmm.labelId = ls.id
where {where.ToString()}";
pageSql = SqlserverHelper.GetInstance.SqlPageList(pageSql, totalSql, pagination);
return pageSql;
}
///
/// 获取分页Sql语句
///
///
///
private string SqlPublishNumberPageList(NewContentPublishNumberListParam param, Pagination pagination, out List parameters)
{
parameters = new List();
var where = new StringBuilder();
where.Append(" 1 = 1 ");
if (param != null)
{
if (param.StartTime != null)
{
where.Append(" and nmm.createTime >= @StartTime ");
parameters.Add(DbParameterExtension.CreateDbParameter("@StartTime", param.StartTime, dbConnectType));
}
if (param.EndTime != null)
{
where.Append(" and nmm.createTime <= @EndTime ");
parameters.Add(DbParameterExtension.CreateDbParameter("@EndTime", param.EndTime, dbConnectType));
}
}
//获取分页数据Sql
var pageSql = string.Empty;
//统计总数据Sql
var totalSql = string.Empty;
if (param.Type == PublishStatisticsType.内容发布量)
{
pageSql = $@"select
0 Id,
nmm.menuId,
mmm.menuName,
nmm.createUserName userName,
count(nmm.ID) publishNumber
from newManagerModels nmm
inner join menuManagerModels mmm on mmm.id = nmm.menuId
where {where.ToString()}
group by nmm.menuId,mmm.menuName,nmm.createUserName";
totalSql = $@"select count(1) from
(
select
count(1) as c
from newManagerModels nmm
inner join menuManagerModels mmm on mmm.id = nmm.menuId
where {where.ToString()}
group by nmm.menuId,mmm.menuName,nmm.createUserName
) TotalTable";
pagination.Sort = "publishNumber";
}
else
{
pageSql = $@"select
0 Id,
nmm.menuId,
mmm.menuName,
count(nmm.menuId) publishNumber
from newManagerModels nmm
inner join menuManagerModels mmm on mmm.id = nmm.menuId
where {where.ToString()}
group by nmm.menuId,mmm.menuName";
totalSql = $@"select count(1) from
(
select
count(1) as c
from newManagerModels nmm
inner join menuManagerModels mmm on mmm.id = nmm.menuId
where {where.ToString()}
group by nmm.menuId,mmm.menuName
) TotalTable";
pagination.Sort = "publishNumber";
}
pageSql = SqlserverHelper.GetInstance.SqlPageList(pageSql, totalSql, pagination);
return pageSql;
}
#endregion
}
}