飞星
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

138 行
4.5 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using AutoMapper;
  5. using Microsoft.EntityFrameworkCore;
  6. using Permission.Entity.DbContext;
  7. using Permission.Entity.System;
  8. using Permission.Infrastructure.Repositories;
  9. using Permission.Infrastructure.WebControls;
  10. using Permission.Service.DTO.ApiModels;
  11. using Permission.Service.IServices;
  12. using Permission.Utils.Validate;
  13. namespace Permission.Service.Services
  14. {
  15. public class SysDictDetailService : ISysDictDetailService
  16. {
  17. private readonly IMapper _mapper;
  18. private readonly PermissionContext _dbContext;
  19. private readonly IBaseRepository<SysDict> _sysDictRepository;
  20. private readonly IBaseRepository<SysDictDetail> _sysDictDetailRepository;
  21. public SysDictDetailService(IMapper mapper,PermissionContext dbContext, IBaseRepository<SysDict> sysDictRepository, IBaseRepository<SysDictDetail> sysDictDetailRepository)
  22. {
  23. this._mapper = mapper;
  24. this._dbContext = dbContext;
  25. this._sysDictRepository = sysDictRepository;
  26. this._sysDictDetailRepository = sysDictDetailRepository;
  27. }
  28. public bool AddModel(SysDictDetail model)
  29. {
  30. try
  31. {
  32. model.GuidId = Guid.NewGuid().ToString();
  33. model.IsEnabled = model.IsEnabled != null;
  34. model.DeleteMark = false;
  35. model.CreateTime = DateTime.Now;
  36. var res = _sysDictDetailRepository.Save(model);
  37. return res;
  38. }
  39. catch (Exception ex)
  40. {
  41. throw ex;
  42. }
  43. }
  44. public bool ModifyModel(SysDictDetail model)
  45. {
  46. throw new System.NotImplementedException();
  47. }
  48. public SysDictDetail GetDictDetailByKey(int key)
  49. {
  50. throw new System.NotImplementedException();
  51. }
  52. public Page<SysDictDetail> PageList(int code, string keyword, int pagesize, int pageindex)
  53. {
  54. try
  55. {
  56. int total = 0;
  57. if (keyword.IsEmpty())
  58. {
  59. var data = _sysDictDetailRepository.PageList(pageindex, pagesize, us => us.OrderBy(ur => ur.SortCode),
  60. u => u,
  61. out total,
  62. u => u.SysDictId == code && u.DeleteMark == false);
  63. return data;
  64. }
  65. else
  66. {
  67. var data = _sysDictDetailRepository.PageList(pageindex, pagesize, us => us.OrderBy(ur => ur.SortCode),
  68. u => u,
  69. out total,
  70. u => (u.ItemCode.Contains(keyword) || u.ItemName.Contains(keyword)) && u.SysDictId == code && u.DeleteMark == false);
  71. return data;
  72. }
  73. }
  74. catch (Exception e)
  75. {
  76. throw e;
  77. }
  78. }
  79. #region 私有方法
  80. private static Func<PermissionContext, int, SysDict> _customerDictById =
  81. EF.CompileQuery((PermissionContext db, int id) => db.SysDicts
  82. .Include(u => u.SysDictDetails)
  83. .FirstOrDefault(c => c.Id == id));
  84. #endregion
  85. #region api
  86. public DictDataModel GetDictDetailListByCodeApi(string code)
  87. {
  88. try
  89. {
  90. if (!code.IsEmpty())
  91. {
  92. var dictModel= _sysDictRepository.Get(m=>m.DictCode==code);
  93. if (dictModel != null)
  94. {
  95. var dictId = dictModel.Id;
  96. var dictName = dictModel.DictName;
  97. var dict = _customerDictById(_dbContext, dictId);
  98. var res = _mapper.Map<List<SysDictDetailApiViewModel>>(dict.SysDictDetails);
  99. var resultMode = new DictDataModel
  100. {
  101. DictTypeId = dictId.ToString(),
  102. DictTypeName = dictName,
  103. Items = res.OrderByDescending(s => s.SortCode).ToList()
  104. };
  105. return resultMode;
  106. }
  107. else
  108. {
  109. return null;
  110. }
  111. }
  112. else
  113. {
  114. return null;
  115. }
  116. }
  117. catch (Exception ex)
  118. {
  119. throw ex;
  120. }
  121. }
  122. #endregion
  123. }
  124. }