using Ropin.Inspection.Common.Helper; using Ropin.Inspection.Model; using Ropin.Inspection.Model.Entities; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; namespace Ropin.Inspection.Repository { public class TmtnPushMsgToRepository : RepositoryBase, ITmtnPushMsgToRepository { public TmtnPushMsgToRepository(InspectionDbContext DbContext) : base(DbContext) { } public Task DeleteByDevPersonIdAsync(string devId, string personId) { MySqlConnector.MySqlParameter[] parameters = new[] { new MySqlConnector.MySqlParameter("devId", devId), new MySqlConnector.MySqlParameter("personId", personId) }; int result = EntityFrameworkCoreExtensions.ExecuteSqlNoQuery(DbContext.Database, "DELETE from TMTN_PushMsgTo WHERE C_DevStoreCode = @devId AND C_PushPersonCode =@personId", parameters); return Task.FromResult(result); } public Task DeleteByDevPersonIdMultipleAsync(string devId, string personStr) { MySqlConnector.MySqlParameter[] parameters = new[] { new MySqlConnector.MySqlParameter("devId", devId) }; string delSql = $"DELETE from TMTN_PushMsgTo WHERE C_DevStoreCode = @devId AND C_PushPersonCode in ('{personStr}')"; int result = EntityFrameworkCoreExtensions.ExecuteSqlNoQuery(DbContext.Database, delSql, parameters); return Task.FromResult(result); } public Task> GetPushMsgUserByAsync(string devStoreCode, string msgTypeCode) { MySqlConnector.MySqlParameter[] parameters = new[] { new MySqlConnector.MySqlParameter("devStoreCode", devStoreCode), new MySqlConnector.MySqlParameter("msgTypeCode", msgTypeCode)}; string sql = @"SELECT B.* FROM TMTN_PushMsgTo A INNER JOIN TSYS_User B ON A.C_PushPersonCode = B.C_UserID WHERE A.C_DevStoreCode = @devStoreCode AND A.C_MsgTypeCode = @msgTypeCode AND B.C_Status = '1'"; var contentlist = EntityFrameworkCoreExtensions.GetList(DbContext.Database, sql, parameters); return Task.FromResult(contentlist); } public Task> GetPushMsgToUsersByAsync(string devStoreCode) { MySqlConnector.MySqlParameter[] parameters = new[] { new MySqlConnector.MySqlParameter("devStoreCode", devStoreCode)}; string sql = @"SELECT A.C_UserID as PushPersonCode,A.C_Name as PushPersonName,C.C_Name as RoleName From TSYS_User A LEFT JOIN TSYS_UserRole B ON A.C_UserID = B.C_UserCode LEFT JOIN TSYS_Role C ON C.C_Code = B.C_RoleCode INNER JOIN TMTN_PushMsgTo D ON D.C_PushPersonCode = A.C_UserID WHERE D.C_DevStoreCode = @devStoreCode And A.C_Status = '1' And C.C_Status = '1' GROUP BY A.C_UserID"; var contentlist = EntityFrameworkCoreExtensions.GetList(DbContext.Database, sql, parameters); return Task.FromResult(contentlist); } public Task GetPushMsgTosByAsync(string devStoreCode, string userCode) { List pushMsgToList = DbContext.TMTN_PushMsgTo.Where(x=>x.C_DevStoreCode == devStoreCode && x.C_PushPersonCode == userCode).ToList(); List pushMsgToMsgTypeList = new List(pushMsgToList); List pushMsgToPushTypeList = new List(pushMsgToList); List msgTypeList = pushMsgToMsgTypeList.Select(y => y.C_MsgTypeCode).ToList(); List pushTypeList = pushMsgToPushTypeList.Select(y => y.C_PushTypeCode).ToList(); TmtnUserPushMsgToViewModel mode = new TmtnUserPushMsgToViewModel { DevStoreCode = devStoreCode, UserCode = userCode, MsgTypeList = msgTypeList, PushTypeList = pushTypeList }; return Task.FromResult(mode); } public async Task PushAlarmMsgAsync(TpushMsgModel pushModel) { IEnumerable pushMsgTolist = DbContext.Set().Where(i => i.C_DevStoreCode.Equals(pushModel.C_DevStoreCode)).AsEnumerable(); IList userList = DbContext.Set().Where(x => x.C_Status == "1").AsEnumerable().ToList(); IList tBDMCodeDetailList = DbContext.Set().Where(x => x.C_Status == "1").AsEnumerable().ToList(); foreach (var pushMsgToItem in pushMsgTolist) { var user = userList.Where(x => x.C_UserID.ToString() == pushMsgToItem.C_PushPersonCode)?.FirstOrDefault(); IList sendUserWechatIDList = new List(); IList pushMsgResultList = new List(); if (pushMsgToItem.C_PushTypeCode == "PUSH_TYPE_001")//Email { //var q = from e in userList // where e.C_UserID == Guid.Parse("d4f4f4ac-3248-418a-a489-498478665537") // //where e.C_Email == "154817501@qq.com" // select new { e.C_Email}; //string email = q?.ToList()?.FirstOrDefault()?.C_Email; //string email = userList.Where(x => x.C_UserID.ToString() == pushMsgToItem.C_PushPersonCode)?.Select(y => y.C_Email)?.FirstOrDefault(); string email = user.C_Email; if (!string.IsNullOrEmpty(email)) { string msg = "

设备编号:" + pushModel.DevNumber + "

" + "

设备名称:" + pushModel.DevName + "

" + "

消息内容:" + pushModel.Msg + "

" + "

设备地址:" + pushModel.DevAddress + "

" + "

报警时间: " + DateTime.Now + "

" ; EmailHelper.SendEmail(email, tBDMCodeDetailList.Where(i => i.C_Code == pushMsgToItem.C_MsgTypeCode).Select(x => x.C_Name).FirstOrDefault(), pushModel.Subject, pushModel.Msg); } } if (pushMsgToItem.C_PushTypeCode == "PUSH_TYPE_002")//wx { var msg = new { thing2 = new { value = "niu" ?? "" }, time4 = new { value = DateTime.Now.ToString("yyyy-MM-dd hh:mm") }, thing5 = new { value = "异常" ?? "" }, thing6 = new { value = "大门损坏" ?? "" }, thing9 = new { value = "msg" ?? "" } }; sendUserWechatIDList.Add(user.C_WechatID); pushMsgResultList.Add(new TMTN_PushMsgResult { C_ID = Guid.NewGuid().ToString(), D_CreateOn = DateTime.Now, C_Status = "1" }); //new WeChatHelper(_httpClientFactory).PushMessageToUser(userlist, msg); //var content = _mapper.Map(createModel); //content.C_ID = Guid.NewGuid().ToString(); //content.C_CreateBy = _claims.ApiUserId; //content.D_CreateOn = DateTime.Now; //content.C_Status = "1"; //_tmtnPushMsgResultRepository.Create(content); //var result = await _repository.SaveAsync(); //if (!result) //{ // throw new Exception("创建失败"); //} } //if (sendUserWechatIDList.Any()) //{ // new WeChatHelper(_httpClientFactory).PushMessageToUser(sendUserWechatIDList, msg); //} } return await Task.FromResult(true); } //public Task> GetByConditionAsync(Expression> expression) //{ // List pushMsgToList = DbContext.Set().Where(expression).AsEnumerable().ToList(); // List userList = DbContext.TSYS_User.ToList(); // var query = from a in pushMsgToList // join b in userList // on a.C_PushPersonCode equals b.C_UserID // select new TmtnPushMsgToViewModel // { // C_ID = a.C_ID, // C_DevStoreCode = a.C_DevStoreCode, // C_PushPersonCode = a.C_PushPersonCode, // C_MsgTypeCode = a.C_MsgTypeCode, // C_PushTypeCode = a.C_PushTypeCode, // C_PushPersonName = b.C_Name, // }; // return query.ToList(); // //return Task.FromResult(DbContext.Set().Where(expression).AsEnumerable()); //} } }