TmtnPushMsgToRepository.cs 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. using Ropin.Inspection.Common.Helper;
  2. using Ropin.Inspection.Model;
  3. using Ropin.Inspection.Model.Entities;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Linq.Expressions;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace Ropin.Inspection.Repository
  11. {
  12. public class TmtnPushMsgToRepository : RepositoryBase<TMTN_PushMsgTo, string>, ITmtnPushMsgToRepository
  13. {
  14. public TmtnPushMsgToRepository(InspectionDbContext DbContext) : base(DbContext)
  15. {
  16. }
  17. public Task<int> DeleteByDevPersonIdAsync(string devId, string personId)
  18. {
  19. MySqlConnector.MySqlParameter[] parameters = new[] { new MySqlConnector.MySqlParameter("devId", devId), new MySqlConnector.MySqlParameter("personId", personId) };
  20. int result = EntityFrameworkCoreExtensions.ExecuteSqlNoQuery(DbContext.Database, "DELETE from TMTN_PushMsgTo WHERE C_DevStoreCode = @devId AND C_PushPersonCode =@personId", parameters);
  21. return Task.FromResult(result);
  22. }
  23. public Task<int> DeleteByDevPersonIdMultipleAsync(string devId, string personStr)
  24. {
  25. MySqlConnector.MySqlParameter[] parameters = new[] { new MySqlConnector.MySqlParameter("devId", devId) };
  26. string delSql = $"DELETE from TMTN_PushMsgTo WHERE C_DevStoreCode = @devId AND C_PushPersonCode in ('{personStr}')";
  27. int result = EntityFrameworkCoreExtensions.ExecuteSqlNoQuery(DbContext.Database, delSql, parameters);
  28. return Task.FromResult(result);
  29. }
  30. public Task<IEnumerable<TSYS_User>> GetPushMsgUserByAsync(string devStoreCode, string msgTypeCode)
  31. {
  32. MySqlConnector.MySqlParameter[] parameters = new[] {
  33. new MySqlConnector.MySqlParameter("devStoreCode", devStoreCode),
  34. new MySqlConnector.MySqlParameter("msgTypeCode", msgTypeCode)};
  35. string sql = @"SELECT B.* FROM TMTN_PushMsgTo A
  36. INNER JOIN TSYS_User B
  37. ON A.C_PushPersonCode = B.C_UserID
  38. WHERE A.C_DevStoreCode = @devStoreCode AND A.C_MsgTypeCode = @msgTypeCode AND B.C_Status = '1'";
  39. var contentlist = EntityFrameworkCoreExtensions.GetList<TSYS_User>(DbContext.Database, sql, parameters);
  40. return Task.FromResult(contentlist);
  41. }
  42. public Task<IEnumerable<TmtnPushMsgToUserViewModel>> GetPushMsgToUsersByAsync(string devStoreCode)
  43. {
  44. MySqlConnector.MySqlParameter[] parameters = new[] {
  45. new MySqlConnector.MySqlParameter("devStoreCode", devStoreCode)};
  46. string sql = @"SELECT A.C_UserID as PushPersonCode,A.C_Name as PushPersonName,C.C_Name as RoleName
  47. From TSYS_User A
  48. LEFT JOIN TSYS_UserRole B ON A.C_UserID = B.C_UserCode
  49. LEFT JOIN TSYS_Role C ON C.C_Code = B.C_RoleCode
  50. INNER JOIN TMTN_PushMsgTo D ON D.C_PushPersonCode = A.C_UserID
  51. WHERE D.C_DevStoreCode = @devStoreCode And A.C_Status = '1' And C.C_Status = '1' GROUP BY A.C_UserID";
  52. var contentlist = EntityFrameworkCoreExtensions.GetList<TmtnPushMsgToUserViewModel>(DbContext.Database, sql, parameters);
  53. return Task.FromResult(contentlist);
  54. }
  55. public Task<TmtnUserPushMsgToViewModel> GetPushMsgTosByAsync(string devStoreCode, string userCode)
  56. {
  57. List<TMTN_PushMsgTo> pushMsgToList = DbContext.TMTN_PushMsgTo.Where(x=>x.C_DevStoreCode == devStoreCode && x.C_PushPersonCode == userCode).ToList();
  58. List<TMTN_PushMsgTo> pushMsgToMsgTypeList = new List<TMTN_PushMsgTo>(pushMsgToList);
  59. List<TMTN_PushMsgTo> pushMsgToPushTypeList = new List<TMTN_PushMsgTo>(pushMsgToList);
  60. List<string> msgTypeList = pushMsgToMsgTypeList.Select(y => y.C_MsgTypeCode).ToList();
  61. List<string> pushTypeList = pushMsgToPushTypeList.Select(y => y.C_PushTypeCode).ToList();
  62. TmtnUserPushMsgToViewModel mode = new TmtnUserPushMsgToViewModel
  63. {
  64. DevStoreCode = devStoreCode,
  65. UserCode = userCode,
  66. MsgTypeList = msgTypeList,
  67. PushTypeList = pushTypeList
  68. };
  69. return Task.FromResult(mode);
  70. }
  71. public async Task<bool> PushAlarmMsgAsync(TpushMsgModel pushModel)
  72. {
  73. IEnumerable<TMTN_PushMsgTo> pushMsgTolist = DbContext.Set<TMTN_PushMsgTo>().Where(i => i.C_DevStoreCode.Equals(pushModel.C_DevStoreCode)).AsEnumerable();
  74. IList<TSYS_User> userList = DbContext.Set<TSYS_User>().Where(x => x.C_Status == "1").AsEnumerable().ToList();
  75. IList<TBDM_CodeDetail> tBDMCodeDetailList = DbContext.Set<TBDM_CodeDetail>().Where(x => x.C_Status == "1").AsEnumerable().ToList();
  76. foreach (var pushMsgToItem in pushMsgTolist)
  77. {
  78. var user = userList.Where(x => x.C_UserID.ToString() == pushMsgToItem.C_PushPersonCode)?.FirstOrDefault();
  79. IList<string> sendUserWechatIDList = new List<string>();
  80. IList<TMTN_PushMsgResult> pushMsgResultList = new List<TMTN_PushMsgResult>();
  81. if (pushMsgToItem.C_PushTypeCode == "PUSH_TYPE_001")//Email
  82. {
  83. //var q = from e in userList
  84. // where e.C_UserID == Guid.Parse("d4f4f4ac-3248-418a-a489-498478665537")
  85. // //where e.C_Email == "154817501@qq.com"
  86. // select new { e.C_Email};
  87. //string email = q?.ToList()?.FirstOrDefault()?.C_Email;
  88. //string email = userList.Where(x => x.C_UserID.ToString() == pushMsgToItem.C_PushPersonCode)?.Select(y => y.C_Email)?.FirstOrDefault();
  89. string email = user.C_Email;
  90. if (!string.IsNullOrEmpty(email))
  91. {
  92. string msg =
  93. "<p><td>设备编号:</td>" + pushModel.DevNumber + "</p>" +
  94. "<p><td>设备名称:</td>" + pushModel.DevName + "</p>" +
  95. "<p><td>消息内容:</td>" + pushModel.Msg + "</p>" +
  96. "<p><td>设备地址:</td>" + pushModel.DevAddress + "</p>" +
  97. "<p><td> 报警时间:</td> " + DateTime.Now + " </p> "
  98. ;
  99. EmailHelper.SendEmail(email, tBDMCodeDetailList.Where(i => i.C_Code == pushMsgToItem.C_MsgTypeCode).Select(x => x.C_Name).FirstOrDefault(), pushModel.Subject, pushModel.Msg);
  100. }
  101. }
  102. if (pushMsgToItem.C_PushTypeCode == "PUSH_TYPE_002")//wx
  103. {
  104. var msg = new
  105. {
  106. thing2 = new { value = "niu" ?? "" },
  107. time4 = new { value = DateTime.Now.ToString("yyyy-MM-dd hh:mm") },
  108. thing5 = new { value = "异常" ?? "" },
  109. thing6 = new { value = "大门损坏" ?? "" },
  110. thing9 = new { value = "msg" ?? "" }
  111. };
  112. sendUserWechatIDList.Add(user.C_WechatID);
  113. pushMsgResultList.Add(new TMTN_PushMsgResult { C_ID = Guid.NewGuid().ToString(),
  114. D_CreateOn = DateTime.Now,
  115. C_Status = "1"
  116. });
  117. //new WeChatHelper(_httpClientFactory).PushMessageToUser(userlist, msg);
  118. //var content = _mapper.Map<TMTN_PushMsgResult>(createModel);
  119. //content.C_ID = Guid.NewGuid().ToString();
  120. //content.C_CreateBy = _claims.ApiUserId;
  121. //content.D_CreateOn = DateTime.Now;
  122. //content.C_Status = "1";
  123. //_tmtnPushMsgResultRepository.Create(content);
  124. //var result = await _repository.SaveAsync();
  125. //if (!result)
  126. //{
  127. // throw new Exception("创建失败");
  128. //}
  129. }
  130. //if (sendUserWechatIDList.Any())
  131. //{
  132. // new WeChatHelper(_httpClientFactory).PushMessageToUser(sendUserWechatIDList, msg);
  133. //}
  134. }
  135. return await Task.FromResult(true);
  136. }
  137. //public Task<IEnumerable<TmtnPushMsgToViewModel>> GetByConditionAsync(Expression<Func<TMTN_PushMsgTo, bool>> expression)
  138. //{
  139. // List<TMTN_PushMsgTo> pushMsgToList = DbContext.Set<TMTN_PushMsgTo>().Where(expression).AsEnumerable().ToList();
  140. // List<TSYS_User> userList = DbContext.TSYS_User.ToList();
  141. // var query = from a in pushMsgToList
  142. // join b in userList
  143. // on a.C_PushPersonCode equals b.C_UserID
  144. // select new TmtnPushMsgToViewModel
  145. // {
  146. // C_ID = a.C_ID,
  147. // C_DevStoreCode = a.C_DevStoreCode,
  148. // C_PushPersonCode = a.C_PushPersonCode,
  149. // C_MsgTypeCode = a.C_MsgTypeCode,
  150. // C_PushTypeCode = a.C_PushTypeCode,
  151. // C_PushPersonName = b.C_Name,
  152. // };
  153. // return query.ToList();
  154. // //return Task.FromResult(DbContext.Set<T>().Where(expression).AsEnumerable());
  155. //}
  156. }
  157. }