123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Diagnostics;
- using System.IO;
- using System.Linq;
- using System.ServiceProcess;
- using System.Text;
- using System.Threading.Tasks;
- using ConsoleDataSync;
- using System.Data.SqlClient;
- using System.Configuration;
- using Newtonsoft.Json;
- namespace WindowsService
- {
- public partial class Service1 : ServiceBase
- {
- public Service1()
- {
- InitializeComponent();
- }
- protected override void OnStart(string[] args)
- {
- EventLog.WriteEntry("");
- WriteLog("用户表同步服务启动");
- System.Timers.Timer t = new System.Timers.Timer();
- t.Interval = 1000;
- t.Elapsed += new System.Timers.ElapsedEventHandler(ChkSrc);//到达时间执行该时间
- t.AutoReset = true;//true为一直执行服务
- t.Enabled = true;//是否设置执行System.Timers.Timer.Enabled事件
- }
- private void ChkSrc(object sender, System.Timers.ElapsedEventArgs e)
- {
- int Hour = e.SignalTime.Hour;
- int Min = e.SignalTime.Minute;
- int Second = e.SignalTime.Second;
- if (Hour == 24 && Min == 00 && Second == 00)
- {
- try
- {
- System.Timers.Timer tt = (System.Timers.Timer)sender;
- tt.Enabled = false;
- SendMessge();
- tt.Enabled = true;
- }
- catch (Exception err)
- {
- WriteLog(err.Message);
- }
- }
- }
- /// <summary>
- /// 开启服务
- /// </summary>
- private void SendMessge()
- {
- WriteLog("同步服务开启");
- string str = TableServer();
- WriteLog(str);
- }
- /// <summary>
- /// 记录日志
- /// </summary>
- /// <param name="str">时间</param>+
- private void WriteLog(string str)
- {
- StreamWriter dout = new StreamWriter(@"c:/" + "server_userLog.txt", true);
- dout.WriteLine("操作事件:" + str);
- dout.WriteLine("操作时间:" + System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
- dout.WriteLine("----------------------------------------");
- dout.Close();
- }
- /// <summary>
- /// 服务停止
- /// </summary>
- protected override void OnStop()
- {
- WriteLog("服务停止");
- EventLog.WriteEntry("服务停止");
- }
- public string TableServer()
- {
- string sendTableName = "SMSHasSend_" + DateTime.Now.ToString("yyyyMM");
- string recvTableName = "SMSHasReceived_" + DateTime.Now.ToString("yyyyMM");
- DataProvider.E(cmd =>
- {
- cmd.CommandText = "IF OBJECT_ID(N'" + sendTableName + "',N'U') IS NULL SELECT * INTO " + sendTableName + " FROM SMSHasSend " + "ELSE DELETE FROM " + sendTableName;
- cmd.ExecuteNonQuery();
- });
- DataProvider.E(cmd =>
- {
- cmd.CommandText = "IF OBJECT_ID(N'" + recvTableName + "',N'U') IS NULL SELECT * INTO " + recvTableName + " FROM SMSHasReceived " + "ELSE DELETE FROM " + recvTableName;
- cmd.ExecuteNonQuery();
- });
- DataProvider.E(cmd =>
- {
- cmd.CommandText = "DELETE FROM USERS";
- cmd.ExecuteNonQuery();
- });
- WriteLog("创建表完成");
- string[] sources = JsonConvert.DeserializeObject<string[]>(ConfigurationManager.AppSettings["user-sources"]);
- foreach (string s in sources)
- {
- using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings[s].ConnectionString))
- {
- try
- {
- connection.Open();
- DataSet ds = new DataSet();
- SqlDataAdapter command = new SqlDataAdapter("SELECT * FROM USERS", connection);
- command.Fill(ds, "Users");
- DataProvider.Insert("Users", ds.Tables[0], ds.Tables[0].Rows.Count);
- }
- catch (SqlException ex)
- {
- return ex.Message;
- }
- }
- }
- sources = JsonConvert.DeserializeObject<string[]>(ConfigurationManager.AppSettings["sms-sources"]);
- foreach (string s in sources)
- {
- using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings[s].ConnectionString))
- {
- try
- {
- connection.Open();
- SqlDataAdapter command;
- DataSet sendMsgs = new DataSet();
- command = new SqlDataAdapter("IF OBJECT_ID(N'" + sendTableName + "', N'U') IS NOT NULL SELECT * FROM " + sendTableName, connection);
- command.Fill(sendMsgs, sendTableName);
- if (sendMsgs.Tables.Count > 0)
- DataProvider.Insert(sendTableName, sendMsgs.Tables[0], sendMsgs.Tables[0].Rows.Count);
- DataSet recvMsgs = new DataSet();
- command = new SqlDataAdapter("IF OBJECT_ID(N'" + recvTableName + "', N'U') IS NOT NULL SELECT * FROM " + recvTableName, connection);
- command.Fill(recvMsgs, recvTableName);
- if (recvMsgs.Tables.Count > 0)
- DataProvider.Insert(recvTableName, recvMsgs.Tables[0], recvMsgs.Tables[0].Rows.Count);
- }
- catch (SqlException ex)
- {
- return ex.Message;
- }
- }
- }
- return "数据同步成功";
- }
- }
- }
|