CommonLangService.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. using Infrastructure.Attribute;
  2. using ZR.Model;
  3. using ZR.Model.Dto;
  4. using ZR.Model.Models;
  5. using ZR.Repository;
  6. namespace ZR.ServiceCore.Services
  7. {
  8. /// <summary>
  9. /// 多语言配置Service业务层处理
  10. ///
  11. /// @author zr
  12. /// @date 2022-05-06
  13. /// </summary>
  14. [AppService(ServiceType = typeof(ICommonLangService), ServiceLifetime = LifeTime.Transient)]
  15. public class CommonLangService : BaseService<CommonLang>, ICommonLangService
  16. {
  17. #region 业务逻辑代码
  18. /// <summary>
  19. /// 查询多语言配置列表
  20. /// </summary>
  21. /// <param name="parm"></param>
  22. /// <returns></returns>
  23. public PagedInfo<CommonLang> GetList(CommonLangQueryDto parm)
  24. {
  25. var predicate = Expressionable.Create<CommonLang>();
  26. predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.LangCode), it => it.LangCode == parm.LangCode);
  27. predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.LangKey), it => it.LangKey.Contains(parm.LangKey));
  28. predicate = predicate.AndIF(parm.BeginAddtime != null, it => it.Addtime >= parm.BeginAddtime && it.Addtime <= parm.EndAddtime);
  29. var response = Queryable()
  30. .Where(predicate.ToExpression())
  31. .ToPage(parm);
  32. return response;
  33. }
  34. /// <summary>
  35. /// 行转列
  36. /// </summary>
  37. /// <param name="parm"></param>
  38. /// <returns></returns>
  39. public dynamic GetListToPivot(CommonLangQueryDto parm)
  40. {
  41. var predicate = Expressionable.Create<CommonLang>();
  42. predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.LangCode), it => it.LangCode == parm.LangCode);
  43. predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.LangKey), it => it.LangKey.Contains(parm.LangKey));
  44. predicate = predicate.AndIF(parm.BeginAddtime != null, it => it.Addtime >= parm.BeginAddtime && it.Addtime <= parm.EndAddtime);
  45. var response = Queryable()
  46. .Where(predicate.ToExpression())
  47. .ToPivotList(it => it.LangCode, it => it.LangKey, it => it.Max(f => f.LangName));
  48. return response;
  49. }
  50. public List<CommonLang> GetLangList(CommonLangQueryDto parm)
  51. {
  52. var predicate = Expressionable.Create<CommonLang>();
  53. predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.LangCode), it => it.LangCode == parm.LangCode);
  54. //predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.LangKey), it => it.LangKey.Contains(parm.LangKey));
  55. var response = Queryable()
  56. .Where(predicate.ToExpression())
  57. .ToList();
  58. return response;
  59. }
  60. public void StorageCommonLang(CommonLangDto parm)
  61. {
  62. List<CommonLang> langs = new();
  63. foreach (var item in parm.LangList)
  64. {
  65. langs.Add(new CommonLang()
  66. {
  67. Addtime = DateTime.Now,
  68. LangKey = parm.LangKey,
  69. LangCode = item.LangCode,
  70. LangName = item.LangName,
  71. });
  72. }
  73. var storage = Context.Storageable(langs)
  74. .WhereColumns(it => new { it.LangKey, it.LangCode })
  75. .ToStorage();
  76. storage.AsInsertable.ExecuteReturnSnowflakeIdList();//执行插入
  77. storage.AsUpdateable.UpdateColumns(it => new { it.LangName }).ExecuteCommand();//执行修改
  78. }
  79. public Dictionary<string, object> SetLang(List<CommonLang> msgList)
  80. {
  81. Dictionary<string, object> dic = new();
  82. foreach (var item in msgList)
  83. {
  84. if (!dic.ContainsKey(item.LangKey))
  85. {
  86. dic.Add(item.LangKey, item.LangName);
  87. }
  88. }
  89. return dic;
  90. }
  91. /// <summary>
  92. /// 导入多语言设置
  93. /// </summary>
  94. /// <returns></returns>
  95. public (string, object, object) ImportCommonLang(List<CommonLang> list)
  96. {
  97. var x = Context.Storageable(list)
  98. .WhereColumns(it => new { it.LangKey, it.LangCode })
  99. .ToStorage();
  100. x.AsInsertable.ExecuteReturnSnowflakeIdList();//插入可插入部分;
  101. x.AsUpdateable.UpdateColumns(it => new { it.LangName }).ExecuteCommand();
  102. string msg = $"插入{x.InsertList.Count} 更新{x.UpdateList.Count} 错误数据{x.ErrorList.Count} 不计算数据{x.IgnoreList.Count} 删除数据{x.DeleteList.Count} 总共{x.TotalList.Count}";
  103. //输出错误信息
  104. foreach (var item in x.ErrorList)
  105. {
  106. Console.WriteLine("错误" + item.StorageMessage);
  107. }
  108. foreach (var item in x.IgnoreList)
  109. {
  110. Console.WriteLine("忽略" + item.StorageMessage);
  111. }
  112. return (msg, x.ErrorList, x.IgnoreList);
  113. }
  114. #endregion
  115. }
  116. }