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 } }