using AutoCheckSMS.Common; using Microsoft.Practices.EnterpriseLibrary.Data; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AutoCheckSMS { /// /// 数据库操作类 /// public class SQLHelper { Database da = DatabaseFactory.CreateDatabase("ConnectionString"); private static SQLHelper _instance; public static SQLHelper Instance { get { if (_instance == null) { _instance = new SQLHelper(); } return _instance; } } #region 审核操作 /// /// 获取待审核内容 /// /// public List GetSmsConent() { List list = new List(); string[] Out = System.Configuration.ConfigurationManager.AppSettings["OutUserid"].Trim().Split(','); string U_sql = "select userid,parentuserid from tbl_user where isuse=1 and isdelete=0"; DataSet U_ds1 = da.ExecuteDataSet(CommandType.Text, U_sql); DataTable U_dt = U_ds1.Tables[0]; List IGetID = new List(); foreach (DataRow item in U_dt.Rows) { IGetID.Add(new GetUserID{ UserID = item[0].ToString(), ParentuserID = item[1].ToString() }); } List GetID = GetSonUsserID(Out, IGetID); string[] I_Out = new string[GetID.Count]; int i = 0; foreach (var item in GetID) { I_Out[i] = item.UserID; i++; } Log4netService.Debug($"过滤ID个数:{GetID.Count}"); try { string time = DateTime.Now.AddHours(-1).ToString("yyyy-MM-dd HH:mm"); string sql = $"select TaskID,UserID,MsgContent,ReadError,IsAudit from tbl_sms_task where CreateTime>= '{time}'and IsAudit=0 and ReadError like '%分包完成%' and msgContent not like '%退' and MsgContent not like '%回_退%' and MsgContent not like '%退订%' and MsgContent not like '%退_T%' and MsgContent not like '%.c%' and MsgContent not like '%点对点%'"; DataSet ds = da.ExecuteDataSet(CommandType.Text, sql); DataTable dt = ds.Tables[0]; if (dt.Rows.Count > 0) { foreach (DataRow dr in dt.Rows) { if (!I_Out.Contains(dr["UserID"].ToString().Trim())) { int taskid = int.Parse(dr["TaskID"].ToString()); int userid = int.Parse(dr["UserID"].ToString()); string content = dr["MsgContent"].ToString(); int isaudit = int.Parse(dr["IsAudit"].ToString()); list.Add(new tbl_sms_task() { TaskID = taskid, UserID = userid, MsgContent = content, IsAudit = isaudit }); } else { Console.WriteLine($"【审核操作】存在过滤ID:{dr["UserID"].ToString().Trim()},跳过该ID内容"); Log4netService.Debug($"【审核操作】存在过滤ID:{dr["UserID"].ToString().Trim()},跳过该ID内容:{dr["MsgContent"]}"); } } } } catch (Exception ex) { Log4netService.Error($"获取待审核内容异常:{ex.Message}"); } return list; } /// /// 递归获取获取子ID /// /// 传入一级ID /// 传入账号表 /// public static List GetSonUsserID(string[] UserID, List GetID) { List LGetID = new List(); List LID = new List(); for (int i = 0; i < UserID.Length; i++) { LID.AddRange(GetID.Where(a => a.ParentuserID == UserID[i]).ToList());//将GetID中符合一级ID的所有子ID传入LID } if (LID.Count != 0)//递归条件 { string[] SonID = new string[LID.Count]; int i = 0; foreach (var item in LID) { //Console.WriteLine($"递归 ID:{item.ParentuserID} 子ID:{item.UserID}"); SonID[i] = item.UserID; i++; }//将子ID转成数组 //for (int l = 0; l < SonID.Length; l++) //{ // Console.WriteLine($"需要递归的ID:{SonID[l]}"); //} for (int h = 0; h < UserID.Length; h++) { LGetID.Add(new GetUserID { UserID = UserID[h].ToString(), ParentuserID = 0.ToString() }); } LGetID.AddRange(GetSonUsserID(SonID, GetID)); } else { for (int i = 0; i < UserID.Length; i++) { LGetID.Add(new GetUserID { UserID = UserID[i].ToString(), ParentuserID = 0.ToString() }); } return LGetID; } return LGetID; } public class GetUserID { public string UserID { get; set; } public string ParentuserID { get; set; } } /// /// 更新审核状态 /// /// /// public int UpdateSmsTask(int audit,int taskids) { try { string sql = "update tbl_sms_task set IsAudit=@isAudit where taskid in (@taskids)"; SqlCommand cmd = new SqlCommand(sql); cmd.Parameters.Add(new SqlParameter() { ParameterName = "@isAudit", Value = audit }); cmd.Parameters.Add(new SqlParameter() { ParameterName = "@taskids", Value = taskids }); return da.ExecuteNonQuery(cmd); } catch (Exception ex) { Log4netService.Error($"更新状态异常:{ex.Message}"); } return 0; } #endregion #region 模板操作 /// /// 获取手动审核通过的内容 /// /// public List GetSmsLogContent() { List list = new List(); try { string[] OutUserid = System.Configuration.ConfigurationManager.AppSettings["OutUserid"].Trim().Split(','); string time = DateTime.Now.AddHours(-1).ToString("yyyy-MM-dd HH:mm"); string sql = $"select TaskID,UserID,MsgContent,ReadError,IsAudit from tbl_sms_task_log where CreateTime>= '{time}' and issend=2 and (MsgContent not like '%退订%' and MsgContent not like '%.c%' and MsgContent not like '%点对点%') and IsAudit=2"; DataSet ds = da.ExecuteDataSet(CommandType.Text, sql); DataTable dt = ds.Tables[0]; if (dt.Rows.Count > 0) { foreach (DataRow dr in dt.Rows) { foreach (var item in OutUserid) { if (dr["UserID"].ToString() != item) { int taskid = int.Parse(dr["TaskID"].ToString()); int userid = int.Parse(dr["UserID"].ToString()); string content = dr["MsgContent"].ToString(); int isaudit = int.Parse(dr["IsAudit"].ToString()); list.Add(new tbl_sms_task() { TaskID = taskid, UserID = userid, MsgContent = content, IsAudit = isaudit }); } else { Console.WriteLine($"存在过滤ID:{item},跳过该ID内容"); Log4netService.Debug($"【模板操作】存在过滤ID:{item},跳过该ID内容:{dr["MsgContent"]}"); } } } } } catch (Exception ex) { Log4netService.Error($"获取已审核的内容异常:{ex.Message}"); } return list; } /// /// 获取模板 /// /// public List GetTemplates() { List list = new List(); string sql = $"select id,template,matchType from A_template "; DataSet ds = da.ExecuteDataSet(CommandType.Text, sql); DataTable dt = ds.Tables[0]; if (dt.Rows.Count > 0) { foreach (DataRow dr in dt.Rows) { int id = int.Parse(dr["id"].ToString()); string template = dr["template"].ToString(); int matchType = int.Parse(dr["matchType"].ToString()); list.Add(new A_template() { Id=id,Template=template,MatchType= matchType }); } } return list; } /// /// 添加模板 /// /// /// /// public int AddTemplate(string template,int matchType) { string sql = "insert into A_template (template,matchType) values (@template,@matchType)"; SqlCommand cmd = new SqlCommand(sql); cmd.Parameters.Add(new SqlParameter() {ParameterName="@template",Value=template }); cmd.Parameters.Add(new SqlParameter() { ParameterName= "@matchType", Value=matchType}); return da.ExecuteNonQuery(cmd); } #endregion } }