public object UserAdd(string loginKey, ref ErrorInfo err, TUser inEnt) { if (!GlobalFun.UserCheckFunctioAuthority(loginKey, ref err, MethodBase.GetCurrentMethod())) { return(null); } GlobalUser gu = Global.GetUser(loginKey); using (DBEntities db = new DBEntities()) { fa_user reEnt = Fun.ClassToCopy <ProInterface.Models.TUser, fa_user>(inEnt); var nowDis = db.fa_district.SingleOrDefault(p => p.ID == inEnt.DISTRICT_ID); reEnt.CREATE_TIME = DateTime.Now; reEnt.DISTRICT_ID = nowDis.ID; reEnt.LOGIN_COUNT = 0; IList <int> moduleID = new List <int>(); foreach (var str in inEnt.RoleAllID.Split(',')) { if (!string.IsNullOrEmpty(str)) { moduleID.Add(Convert.ToInt32(str)); } } reEnt.ID = Fun.GetSeqID <fa_user>(); reEnt.REGION = nowDis.REGION; reEnt.fa_role = db.fa_role.Where(x => moduleID.Contains(x.ID)).ToList(); reEnt.fa_district1.Clear(); if (!string.IsNullOrEmpty(inEnt.UserDistrict)) { var disArrList = inEnt.UserDistrict.Split(',').Select(x => Convert.ToInt32(x)).ToList(); reEnt.fa_district1 = db.fa_district.Where(x => disArrList.Contains(x.ID)).ToList(); } reEnt = db.fa_user.Add(reEnt); fa_login login = new fa_login(); login.ID = Fun.GetSeqID <fa_login>(); login.LOGIN_NAME = inEnt.LOGIN_NAME; if (!string.IsNullOrEmpty(inEnt.PassWord)) { login.PASSWORD = inEnt.PassWord.Md5(); } else { login.PASSWORD = AppSet.DefaultPwd.Md5(); } login.PHONE_NO = inEnt.PHONE_NO; login.IS_LOCKED = inEnt.IS_LOCKED; login.LOCKED_REASON = inEnt.LOCKED_REASON; login.REGION = reEnt.REGION; login = db.fa_login.Add(login); try { db.SaveChanges(); GlobalFun.UserWriteLog(loginKey, MethodBase.GetCurrentMethod(), StatusType.UserLogType.Add); return(reEnt.ID); } catch (Exception e) { err.IsError = true; err.Message = Fun.GetExceptionMessage(e); err.Excep = e; return(null); } } }
public static GlobalUser Add(int userId, string loginIP) { GlobalUser reEnt = new GlobalUser(); var entArr = OnLines.Where(a => a.UserId == userId && a.LoginIP == loginIP).ToList(); if (entArr.Count() > 0) { reEnt = entArr[0]; reEnt.LastOpTime = DateTime.Now; return(reEnt); } lock (symObj) { using (DBEntities db = new DBEntities()) { var user = db.fa_user.SingleOrDefault(x => x.ID == userId); string loginKey = Guid.NewGuid().ToString().Replace("-", ""); ClearTimeOutUser(); IList <string> idArr = new List <string>(); var dis = user.fa_district; var tmp = dis; while (tmp != null) { idArr.Add(tmp.ID.ToString()); tmp = tmp.fa_district2; } string tmpRuleRegionList = ""; if (user.fa_district1.Count() > 0) { tmpRuleRegionList = string.Format("'{0}'", string.Join("','", user.fa_district1.Select(x => x.CODE).ToList())); } else { tmpRuleRegionList = string.Format("'{0}'", user.DISTRICT_ID); } reEnt = new GlobalUser { Guid = loginKey, UserId = userId, DistrictId = user.DISTRICT_ID, LastOpTime = DateTime.Now, RoleID = user.fa_role.Select(y => y.ID).ToList(), UserName = user.NAME, LoginIP = loginIP, Region = user.DISTRICT_ID.ToString(), RegionList = idArr, RuleRegionStr = tmpRuleRegionList, LevelId = user.fa_district.LEVEL_ID, LoginName = user.LOGIN_NAME, DistrictCode = user.fa_district.CODE }; OnLines.Add(reEnt); Save(); #region 记录登录历史 var tmp_user = db.fa_user.SingleOrDefault(x => x.ID == userId); if (tmp_user.LOGIN_COUNT == null) { tmp_user.LOGIN_COUNT = 0; } tmp_user.LOGIN_COUNT++; tmp_user.LAST_LOGIN_TIME = DateTime.Now; if (ProInterface.AppSet.WiteLoginLog) { fa_login_history hist = new fa_login_history(); hist.ID = Fun.GetSeqID <fa_login_history>(); hist.USER_ID = userId; hist.LOGIN_TIME = DateTime.Now; hist.LOGIN_HOST = loginIP; db.fa_login_history.Add(hist); GetUser(loginKey).loginHistoryId = hist.ID; } ErrorInfo err = new ErrorInfo(); Fun.DBEntitiesCommit(db, ref err); #endregion //var Watermark = PicFun.CreateWatermark(ProInterface.AppSet.SysName, reEnt.UserName); //try //{ // File.WriteAllBytes(string.Format("{0}/UpFiles/{1}.jpg", AppDomain.CurrentDomain.BaseDirectory, reEnt.Guid), Watermark); //} //catch { } return(reEnt); } } }
public object BulletinSave(string loginKey, ref ErrorInfo err, ProInterface.Models.TBulletin inEnt, IList <string> allPar) { if (!UserCheckFunctioAuthority(loginKey, ref err, MethodBase.GetCurrentMethod())) { return(null); } using (DBEntities db = new DBEntities()) { GlobalUser gu = Global.GetUser(loginKey); inEnt.AllFiles = JSON.EncodeToEntity <IList <FILES> >(inEnt.AllFilesStr == null ? "[]" : inEnt.AllFilesStr); IList <int> fileIdList = inEnt.AllFiles.Select(x => x.ID).ToList(); if (string.IsNullOrEmpty(inEnt.AllRoleId)) { err.IsError = true; err.Message = string.Format("保存失败,没有选择可查看的角色", inEnt.AllRoleId); return(null); } IList <int> AllRoleId = inEnt.AllRoleId.Split(',').Select(x => Convert.ToInt32(x)).ToList(); YL_BULLETIN reEnt = new YL_BULLETIN(); if (inEnt.ID == 0) { reEnt = Fun.ClassToCopy <ProInterface.Models.BULLETIN, YL_BULLETIN>(inEnt); reEnt.ID = Fun.GetSeqID <YL_BULLETIN>(); reEnt.YL_FILES = db.YL_FILES.Where(x => fileIdList.Contains(x.ID)).ToList(); reEnt.YL_ROLE = db.YL_ROLE.Where(x => AllRoleId.Contains(x.ID)).ToList(); reEnt.PUBLISHER = gu.UserName; reEnt.CREATE_TIME = DateTime.Now; reEnt.UPDATE_TIME = DateTime.Now; reEnt.REGION = gu.Region; reEnt.USER_ID = gu.UserId; reEnt = db.YL_BULLETIN.Add(reEnt); UserWriteLog(loginKey, MethodBase.GetCurrentMethod(), StatusType.UserLogType.Add); } else { reEnt = db.YL_BULLETIN.SingleOrDefault(x => x.ID == inEnt.ID); if (reEnt.USER_ID != gu.UserId) { err.IsError = true; err.Message = string.Format("该公告是【{0}】添加的,不能修改", reEnt.PUBLISHER); return(null); } reEnt = Fun.ClassToCopy <ProInterface.Models.BULLETIN, YL_BULLETIN>(inEnt, reEnt, allPar); var allNowFiles = db.YL_FILES.Where(x => fileIdList.Contains(x.ID)).ToList(); foreach (var t in reEnt.YL_FILES.ToList()) { if (allNowFiles.SingleOrDefault(x => x.ID == t.ID) == null) { reEnt.YL_FILES.Remove(t); db.YL_FILES.Remove(t); } } reEnt.YL_FILES.Clear(); reEnt.YL_ROLE.Clear(); reEnt.YL_ROLE = db.YL_ROLE.Where(x => AllRoleId.Contains(x.ID)).ToList(); reEnt.YL_FILES = allNowFiles; reEnt.PUBLISHER = gu.UserName; reEnt.UPDATE_TIME = DateTime.Now; UserWriteLog(loginKey, MethodBase.GetCurrentMethod(), StatusType.UserLogType.Edit); } try { //FunTask.StartTask(db, ref err, 1, "阅读公告信息", gu); db.SaveChanges(); return(reEnt.ID); } catch (DbEntityValidationException e) { err.IsError = true; err.Message = Fun.GetDbEntityErrMess(e); err.Excep = e; return(null); } } }
public void Execute(IJobExecutionContext context) { #region 检测运算实例是否存在,并把结束了的线程终止 QuartzRunStatus nowQrs = new QuartzRunStatus(); IList <QuartzRunStatus> qrs = new List <QuartzRunStatus>(); try { qrs = ProInterface.JSON.EncodeToEntity <IList <QuartzRunStatus> >(System.IO.File.ReadAllText(statusLogPath)); } catch { } foreach (var t in qrs.Where(x => x.StatusTime.AddHours(2) < DateTime.Now).ToList()) { qrs.Remove(t); } if (qrs == null) { qrs = new List <QuartzRunStatus>(); } nowQrs = qrs.SingleOrDefault(x => x.JobName == context.JobDetail.Key.Name); if (nowQrs == null) { nowQrs = new QuartzRunStatus(); } if (nowQrs.IsRun) { return; } nowQrs.IsRun = true; nowQrs.JobName = context.JobDetail.Key.Name; nowQrs.StatusTime = DateTime.Now; if (qrs.SingleOrDefault(x => x.JobName == context.JobDetail.Key.Name) == null) { qrs.Add(nowQrs); } Fun.WriteAllText(statusLogPath, ProInterface.JSON.DecodeToStr(qrs)); #endregion try { #region 添加发送的短信 //添加数据 string sql = @" INSERT INTO YL_SMS_SEND( KEY, MESSAGE_ID, PHONE_NO, ADD_TIME, CONTENT, STAUTS) SELECT SYS_GUID() KEY, A.MESSAGE_ID, A.PHONE_NO, sysdate ADD_TIME, B.CONTENT, '等待' STAUTS FROM YL_USER_MESSAGE A,YL_MESSAGE B WHERE A.MESSAGE_ID=B.ID AND A.STATUS='等待' AND PHONE_NO IS NOT NULL AND ((CEIL(((SYSDATE -CAST(A.STATUS_TIME AS DATE) )) * 24 * 60)>30 AND B.PUSH_TYPE='智能推送') OR B.PUSH_TYPE='短信推送') "; //更新状态 string sqlUpdate = "UPDATE YL_USER_MESSAGE SET STATUS='已推送',PUSH_TYPE='短信推送' WHERE STATUS='等待' AND PHONE_NO IS NOT NULL AND ((CEIL(((SYSDATE -CAST(STATUS_TIME AS DATE) )) * 24 * 60)>30 AND PUSH_TYPE='智能推送') OR PUSH_TYPE='短信推送')"; FunSqlToClass.NonQuery(sql, ConfigurationManager.AppSettings["dbType"], ConfigurationManager.AppSettings["dbConnSt"], ConfigurationManager.AppSettings["dbPrefix"]); FunSqlToClass.NonQuery(sqlUpdate, ConfigurationManager.AppSettings["dbType"], ConfigurationManager.AppSettings["dbConnSt"], ConfigurationManager.AppSettings["dbPrefix"]); #endregion IList <ProInterface.Models.SMS_SEND> reList = new List <ProInterface.Models.SMS_SEND>(); reList = FunSqlToClass.SqlToList <ProInterface.Models.SMS_SEND>("SELECT * FROM YL_SMS_SEND WHERE STAUTS='等待' OR (STAUTS='失败' AND TRY_NUM<5)", ConfigurationManager.AppSettings["dbType"], ConfigurationManager.AppSettings["dbConnSt"]); if (reList != null && reList.Count() > 0) { reList = reList.OrderBy(x => x.ADD_TIME).ToList(); ProInterface.ErrorInfo error = new ErrorInfo(); int succNum = 0; FunSqlToClass.NonQuery("UPDATE YL_SMS_SEND SET TRY_NUM=TRY_NUM+1 WHERE STAUTS='等待' OR (STAUTS='失败' AND TRY_NUM<5)", ConfigurationManager.AppSettings["dbType"], ConfigurationManager.AppSettings["dbConnSt"], ConfigurationManager.AppSettings["dbPrefix"]); foreach (var t in reList.GroupBy(x => x.CONTENT).ToList()) { var conten = t.Key; var phoneList = t.Select(x => x.PHONE_NO).ToArray(); Dictionary <string, object> dic = new Dictionary <string, object>(); dic.Add("SEND_TIME", DateTime.Now); dic.Add("STAUTS", "成功"); var allPage = t.Count() / 1000; if (t.Count() % 1000 != 0) { allPage++; } for (var i = 0; i < allPage; i++) { FunSqlToClass.UpData <SMS_SEND>( ConfigurationManager.AppSettings["dbType"], ConfigurationManager.AppSettings["dbConnSt"], dic, string.Format(" where KEY IN ('{0}') ", string.Join("','", t.Skip(i * 1000).Take(1000).Select(x => x.KEY))), ConfigurationManager.AppSettings["dbPrefix"]); } foreach (var phone in phoneList) { DbHelper.MasHelper.Send(phone, conten); } succNum += phoneList.Count(); } //sms.SmsConnection("", ref error); //foreach (var t in reList) //{ // Dictionary<string, object> dic = new Dictionary<string, object>(); // dic.Add("SEND_TIME", DateTime.Now); // string[] listPhoneNo = new string[] { t.PHONE_NO }; // if (sms.SmsSend("", ref error, t.PHONE_NO, t.CONTENT)) // //if (SMSHandle.sendSms(listPhoneNo, t.CONTENT) == "0") // { // succNum++; // dic.Add("STAUTS", "成功"); // } // else // { // dic.Add("STAUTS", "失败"); // } // FunSqlToClass.UpData<SMS_SEND>( // ConfigurationManager.AppSettings["dbType"], // ConfigurationManager.AppSettings["dbConnSt"], // dic, // string.Format(" where KEY='{0}' ", t.KEY), // ConfigurationManager.AppSettings["dbPrefix"]); //} //sms.SmsDisconnection("", ref error); //if (error.IsError) //{ // logger.Info(string.Format("断开短信猫失败【{0}】", error.Message)); //} logger.Info(string.Format("成功发送【{0}】条短信", succNum)); } qrs.Remove(nowQrs); Fun.WriteAllText(statusLogPath, ProInterface.JSON.DecodeToStr(qrs)); } catch (Exception ex) { qrs.Remove(nowQrs); Fun.WriteAllText(statusLogPath, ProInterface.JSON.DecodeToStr(qrs)); logger.Error("发送短信 运行异常", ex); } }
/// <summary> /// 通过两个点的经纬度计算距离(米) /// </summary> /// <param name="lat1"></param> /// <param name="lng1"></param> /// <param name="lat2"></param> /// <param name="lng2"></param> /// <returns></returns> public static double GetDistance(string lat1, string lng1, string lat2, string lng2) { return(Fun.GetDistance(Convert.ToDouble(lat1), Convert.ToDouble(lng1), Convert.ToDouble(lat2), Convert.ToDouble(lng2))); }
public TUser UserGetAndSave(string loginKey, ref ErrorInfo err, TUser inEnt, IList <string> allPar) { if (!GlobalFun.UserCheckFunctioAuthority(loginKey, ref err, MethodBase.GetCurrentMethod())) { return(null); } using (DBEntities db = new DBEntities()) { try { string nowLoginName = inEnt.LOGIN_NAME; var userEnt = db.fa_user.SingleOrDefault(x => x.LOGIN_NAME == inEnt.LOGIN_NAME); var loginEnt = db.fa_login.SingleOrDefault(x => x.LOGIN_NAME == nowLoginName); if (userEnt == null) { userEnt = Fun.ClassToCopy <ProInterface.Models.TUser, fa_user>(inEnt); userEnt.ID = Fun.GetSeqID <fa_user>(); userEnt.CREATE_TIME = DateTime.Now; userEnt.LOGIN_COUNT = 0; userEnt.REGION = db.fa_district.SingleOrDefault(p => p.ID == inEnt.DISTRICT_ID).REGION; db.fa_user.Add(userEnt); } if (loginEnt == null) { loginEnt = Fun.ClassToCopy <TUser, fa_login>(inEnt); loginEnt.ID = Fun.GetSeqID <fa_login>(); loginEnt.PASSWORD = (string.IsNullOrEmpty(inEnt.PassWord)) ? AppSet.DefaultPwd.Md5() : inEnt.PassWord.Md5(); loginEnt.REGION = userEnt.REGION; db.fa_login.Add(loginEnt); } IList <int> allRoleId = userEnt.fa_role.Select(x => x.ID).ToList(); foreach (var t in inEnt.RoleAllID.Split(',').Where(x => !string.IsNullOrEmpty(x)).Select(x => Convert.ToInt32(x)).ToList()) { allRoleId.Add(t); } ; userEnt.fa_role.Clear(); userEnt.fa_role = db.fa_role.Where(x => allRoleId.Contains(x.ID)).ToList(); db.SaveChanges(); inEnt = Fun.ClassToCopy <fa_user, TUser>(userEnt, inEnt); inEnt.ID = userEnt.ID; GlobalFun.UserWriteLog(loginKey, MethodBase.GetCurrentMethod(), StatusType.UserLogType.Edit); return(inEnt); } catch (DbEntityValidationException e) { err.IsError = true; err.Message = Fun.GetDbEntityErrMess(e); return(null); } catch (Exception e) { err.IsError = true; err.Message = Fun.GetExceptionMessage(e); return(null); } } }
public TTask TaskSingle(string loginKey, ref ErrorInfo err, int id) { GlobalUser gu = Global.GetUser(loginKey); if (gu == null) { err.IsError = true; err.Message = "登录超时"; return(null); } using (DBEntities db = new DBEntities()) { var allFlownodeId = db.YL_FLOW_FLOWNODE_FLOW.Where(x => x.YL_ROLE.Where(y => gu.RoleID.Contains(y.ID)).Count() > 0).Select(x => x.FROM_FLOWNODE_ID).ToList(); var task = db.YL_TASK.SingleOrDefault(x => x.ID == id); var tmp = Fun.ClassToCopy <YL_TASK, TTask>(task); var createUser = db.YL_USER.SingleOrDefault(x => x.ID == task.CREATE_USER); tmp.CreatePhone = createUser.LOGIN_NAME; IList <TTaskFlow> AllFlow = new List <TTaskFlow>(); foreach (var flow in task.YL_TASK_FLOW.OrderBy(x => x.ID).ToList()) { TTaskFlow nowFlow = Fun.ClassToCopy <YL_TASK_FLOW, TTaskFlow>(flow); nowFlow.FlowId = (flow.YL_TASK.FLOW_ID == null) ? 0 : flow.YL_TASK.FLOW_ID.Value; if (!string.IsNullOrEmpty(flow.ROLE_ID_STR)) { var allRoleId = flow.ROLE_ID_STR.Split(',').Select(x => Convert.ToInt32(x)).ToList(); nowFlow.RoleList = db.YL_ROLE.Where(x => allRoleId.Contains(x.ID)).ToList().Select(x => new KTV { K = x.ID.ToString(), V = x.NAME, child = x.YL_USER.ToList().Select(y => new KTV { K = y.ID.ToString(), V = y.NAME }).ToList() }).ToList(); } nowFlow.TaskName = flow.YL_TASK.TASK_NAME; nowFlow.TaskRemark = flow.YL_TASK.REMARK; if (flow.YL_TASK_FLOW2 != null && flow.YL_TASK_FLOW2.YL_TASK_FLOW_HANDLE.Count() > 0) { var handle = flow.YL_TASK_FLOW2.YL_TASK_FLOW_HANDLE.ToList()[0]; nowFlow.SendUserId = handle.DEAL_USER_ID; nowFlow.SendUserName = handle.DEAL_USER_NAME; } foreach (var handle in flow.YL_TASK_FLOW_HANDLE.ToList()) { var tmpHandle = Fun.ClassToCopy <YL_TASK_FLOW_HANDLE, TTaskFlowHandle>(handle); tmpHandle.AllFiles = Fun.ClassListToCopy <YL_FILES, FILES>(handle.YL_FILES.ToList()); nowFlow.AllHandle.Add(tmpHandle); nowFlow.DealUserName = handle.DEAL_USER_NAME; } AllFlow.Add(nowFlow); } tmp.AllFlow = AllFlow; #region 计算所有按钮 var nowTaskFlowList = task.YL_TASK_FLOW.Where(x => x.IS_HANDLE == 0 && (x.HANDLE_USER_ID == gu.UserId || (x.FLOWNODE_ID != null && allFlownodeId.Contains(x.FLOWNODE_ID.Value)))).ToList(); if (nowTaskFlowList.Count() > 0) { var nowTaskFlow = nowTaskFlowList[0]; tmp.NowFlowId = nowTaskFlow.ID; var allBut = db.YL_FLOW_FLOWNODE_FLOW.Where(x => x.FROM_FLOWNODE_ID == nowTaskFlow.FLOWNODE_ID && x.FLOW_ID == task.FLOW_ID).ToList(); tmp.AllButton = allBut.Select(x => x.STATUS).ToList(); if (AllFlow.Count() > 3 && !nowTaskFlow.YL_TASK_FLOW2.DEAL_STATUS.Equals("驳回")) { tmp.AllButton.Insert(0, "驳回"); } } #endregion return(tmp); } }
public bool UserMessageSaveByGlobalUser(GlobalUser gu, ref ErrorInfo err, ProInterface.Models.MESSAGE inEnt, IList <string> allPar, string allUserIdStr = null) { using (DBEntities db = new DBEntities()) { var disId = string.Format(".{0}.", inEnt.DISTRICT_ID); IList <int> allUserId = new List <int>(); IList <int> allRole = new List <int>(); IList <int> allUser = new List <int>(); if (!string.IsNullOrEmpty(inEnt.ALL_ROLE_ID)) { allRole = inEnt.ALL_ROLE_ID.Split(',').Select(x => Convert.ToInt32(x)).ToList(); } if (!string.IsNullOrEmpty(allUserIdStr)) { allUser = allUserIdStr.Split(',').Select(x => Convert.ToInt32(x)).ToList(); } if (allUser.Count() > 0) { allUserId = db.YL_USER.Where(x => allUser.Contains(x.ID) && (x.YL_DISTRICT.ID_PATH.IndexOf(disId) > -1 || x.DISTRICT_ID == inEnt.DISTRICT_ID)).Select(x => x.ID).ToList(); } else if (allRole.Count() == 0) { allUserId = db.YL_USER.Where(x => x.YL_DISTRICT.ID_PATH.IndexOf(disId) > -1).Select(x => x.ID).ToList(); } else { allUserId = db.YL_USER.Where(x => x.YL_ROLE.Where(y => allRole.Contains(y.ID)).Count() > 0 && (x.DISTRICT_ID == inEnt.DISTRICT_ID || x.YL_DISTRICT.ID_PATH.IndexOf(disId) > -1)).Select(x => x.ID).ToList(); } YL_MESSAGE message = new YL_MESSAGE(); bool isAdd = false; if (inEnt.ID == 0) { isAdd = true; message = Fun.ClassToCopy <ProInterface.Models.MESSAGE, YL_MESSAGE>(inEnt); if (message.MESSAGE_TYPE_ID == null) { message.MESSAGE_TYPE_ID = 1; } message.ID = Fun.GetSeqID <YL_MESSAGE>(); message.CREATE_TIME = DateTime.Now; message.CREATE_USERNAME = gu.UserName; message.CREATE_USERID = gu.UserId; var allUserList = db.YL_USER.Where(x => allUserId.Contains(x.ID)).ToList(); var tmpLoginName = allUserList.Select(x => x.LOGIN_NAME).ToList(); var allLogin = db.YL_LOGIN.Where(x => tmpLoginName.Contains(x.LOGIN_NAME)).ToList(); foreach (var t in allUserList) { var login = allLogin.SingleOrDefault(x => x.LOGIN_NAME == t.LOGIN_NAME); if (login != null && login.PHONE_NO != null) { YL_USER_MESSAGE tmp = new YL_USER_MESSAGE(); tmp.MESSAGE_ID = message.ID; tmp.USER_ID = t.ID; tmp.PHONE_NO = login.PHONE_NO; tmp.STATUS = "等待"; tmp.STATUS_TIME = DateTime.Now; if (message.PUSH_TYPE == "短信推送") { SmsSendAdd(db, login.PHONE_NO, message.CONTENT, message.ID); tmp.STATUS = "已推送"; } tmp.PUSH_TYPE = message.PUSH_TYPE; message.YL_USER_MESSAGE.Add(tmp); } } } else { message = db.YL_MESSAGE.Single(x => x.ID == inEnt.ID); message = Fun.ClassToCopy <ProInterface.Models.MESSAGE, YL_MESSAGE>(inEnt, message, allPar); } if (isAdd) { db.YL_MESSAGE.Add(message); } db.SaveChanges(); } return(true); }
public bool ScriptSave(string loginKey, ref ErrorInfo err, TScript inEnt, IList <string> allPar) { GlobalUser gu = Global.GetUser(loginKey); if (gu == null) { err.IsError = true; err.Message = "登录超时"; return(false); } if (!UserCheckFunctioAuthority(loginKey, ref err, MethodBase.GetCurrentMethod())) { return(false); } using (DBEntities db = new DBEntities()) { try { var ent = db.YL_SCRIPT.SingleOrDefault(a => a.ID == inEnt.ID); bool isAdd = false; if (ent == null) { isAdd = true; ent = Fun.ClassToCopy <ProInterface.Models.TScript, YL_SCRIPT>(inEnt); ent.ID = Fun.GetSeqID <YL_SCRIPT>(); } else { if (!ent.BODY_TEXT.Equals(inEnt.BODY_TEXT)) { inEnt.BODY_TEXT = string.Format("//{0}于{1}修改\r\n{2}", gu.UserName, DateTime.Now.ToString(), inEnt.BODY_TEXT); } ent = Fun.ClassToCopy <ProInterface.Models.TScript, YL_SCRIPT>(inEnt, ent, allPar); } if (!string.IsNullOrEmpty(inEnt.ScriptGroupListJosn)) { inEnt.ScriptGroupList = JSON.EncodeToEntity <IList <SCRIPT_GROUP_LIST> >(inEnt.ScriptGroupListJosn); } foreach (var t in inEnt.ScriptGroupList) { var single = ent.YL_SCRIPT_GROUP_LIST.SingleOrDefault(x => x.SCRIPT_ID == t.SCRIPT_ID); if (single == null) { single = Fun.ClassToCopy <ProInterface.Models.SCRIPT_GROUP_LIST, YL_SCRIPT_GROUP_LIST>(t); single.GROUP_ID = ent.ID; ent.YL_SCRIPT_GROUP_LIST.Add(single); } else { single.ORDER_INDEX = t.ORDER_INDEX; } } foreach (var t in ent.YL_SCRIPT_GROUP_LIST.ToList()) { var single = inEnt.ScriptGroupList.SingleOrDefault(x => x.SCRIPT_ID == t.SCRIPT_ID); if (single == null) { db.YL_SCRIPT_GROUP_LIST.Remove(t); } } if (isAdd) { db.YL_SCRIPT.Add(ent); } db.SaveChanges(); UserWriteLog(loginKey, MethodBase.GetCurrentMethod(), StatusType.UserLogType.Edit); return(true); } catch (Exception e) { err.IsError = true; err.Message = e.Message; return(false); } } }
public IList <QueryCfg> QueryGetCfg(string loginKey, ref ErrorInfo err, string sql, string queryCode) { using (DBEntities db = new DBEntities()) { var query = db.YL_QUERY.SingleOrDefault(x => x.CODE == queryCode); IList <QueryCfg> nowCfgList = new List <QueryCfg>(); GlobalUser gu = Global.GetUser(loginKey); if (gu == null) { err.IsError = true; err.Message = "用户登录超时,请重新登录"; return(nowCfgList); } if (sql.IndexOf("<sql>") > -1) { var xml = XmlHelper.Document.Load(sql); } sql = ReplacePer(sql, gu, null); DataTable dt = new DataTable(); try { dt = ExecuteGetNullTable(query.DB_SERVER_ID.Value, sql); } catch (Exception e) { err.IsError = true; err.Message = Fun.GetExceptionMessage(e); return(nowCfgList); } for (int i = 0; i < dt.Columns.Count; i++) { var t = dt.Columns[i]; var tmp = t.DataType.FullName.ToLower().Substring(t.DataType.FullName.IndexOf(".") + 1); IList <string> numberList = new[] { "int", "decimal", "double", "int64", "int16" }; if (numberList.Contains(tmp)) { tmp = "int"; } string searchType = ""; string searchScript = null; switch (tmp) { case "int": searchScript = "$('{@this}').numberbox({min:0,precision:0});"; searchType = "numberbox"; break; case "datetime": searchScript = "$('{@this}').datetimebox({showSeconds: false,required: false});"; searchType = "datetimebox"; break; default: searchType = "text"; break; } nowCfgList.Add(new QueryCfg() { FieldName = t.ColumnName, Show = true, FieldType = t.DataType.FullName, Width = 0, CanSearch = true, SearchType = searchType, SearchScript = searchScript, Sortable = true, Alias = t.Caption }); } #region 获取当前状态 { var queryEnt = db.YL_QUERY.SingleOrDefault(x => x.CODE == queryCode); if (queryEnt != null) { IList <QueryCfg> old = JSON.EncodeToEntity <IList <QueryCfg> >(queryEnt.QUERY_CFG_JSON); if (old != null) { for (int i = 0; i < nowCfgList.Count; i++) { var t0 = old.SingleOrDefault(x => x.FieldName == nowCfgList[i].FieldName); if (t0 != null) { nowCfgList[i] = t0; } } } } } #endregion return(nowCfgList); } }
public DataTable QueryDataTable(string loginKey, ref ErrorInfo err, string queryCode, string orderStr, string whereStr, IList <QueryPara> paraList, ref string sqlStr) { DataTable reDt = new DataTable(); using (DBEntities db = new DBEntities()) { var query = db.YL_QUERY.SingleOrDefault(x => x.CODE == queryCode); TQuery ent = Fun.ClassToCopy <YL_QUERY, TQuery>(query); GlobalUser gu = Global.GetUser(loginKey); ent.QUERY_CONF = MakeSql(gu, ent.QUERY_CONF, orderStr, whereStr, paraList, ref whereStr, Fun.GetDataBaseType()); reDt = ExecuteSqlAll(query.DB_SERVER_ID.Value, ent.QUERY_CONF, orderStr, whereStr, ref sqlStr); reDt.TableName = "tables1"; if (ent.QueryCfg != null) { foreach (var par in ent.QueryCfg) { if (reDt.Columns[par.FieldName] != null) { if (par.Show) { reDt.Columns[par.FieldName].Caption = par.Alias; //reDt.Columns[par.FieldName].ColumnName = par.Alias; } else { reDt.Columns.Remove(par.FieldName); } } } } return(reDt); } }
public int QueryCount(string loginKey, ref ErrorInfo err, string queryCode, string whereJsonStr, IList <QueryPara> paraList, ref string sqlStr) { using (DBEntities db = new DBEntities()) { var query = db.YL_QUERY.SingleOrDefault(x => x.CODE == queryCode); TQuery ent = Fun.ClassToCopy <YL_QUERY, TQuery>(query); GlobalUser gu = Global.GetUser(loginKey); string whereStr = ""; ent.QUERY_CONF = MakeSql(gu, ent.QUERY_CONF, null, whereJsonStr, paraList, ref whereStr, Fun.GetDataBaseType()); string withStr = ""; string WithStartStr = "-----WithStart-----"; string WithEndStr = "-----WithEnd-----"; int WithStartP = ent.QUERY_CONF.IndexOf(WithStartStr); int WithEndP = ent.QUERY_CONF.IndexOf(WithEndStr); if (WithStartP > -1 && WithEndP > -1 && WithEndP > WithStartP) { withStr = ent.QUERY_CONF.Substring(WithStartStr.Length, WithEndP - WithStartP - WithStartStr.Length); ent.QUERY_CONF = ent.QUERY_CONF.Substring(WithEndP + WithEndStr.Length); } if (!string.IsNullOrEmpty(whereStr)) { ent.QUERY_CONF = withStr + "SELECT * FROM ( " + ent.QUERY_CONF + " ) TMP where " + whereStr; } else { ent.QUERY_CONF = withStr + "SELECT * FROM ( " + ent.QUERY_CONF + " ) TMP"; } var reInt = 0; try { sqlStr = ent.QUERY_CONF; reInt = ExecuteCount(query.DB_SERVER_ID.Value, ent.QUERY_CONF); } catch (Exception e) { err.IsError = true; err.Message = e.Message; } return(reInt); } }
public DataTable QueryExecute(string loginKey, ref ErrorInfo err, string queryCode, int pageIndex, int pageSize, string orderStr, string whereJsonStr, IList <QueryPara> paraList, ref string sqlStr) { DataTable reDt = new DataTable(); GlobalUser gu = Global.GetUser(loginKey); if (gu == null) { err.IsError = true; err.Message = "用户【" + loginKey + "】登录超时,请重新登录"; return(reDt); } using (DBEntities db = new DBEntities()) { var query = db.YL_QUERY.SingleOrDefault(x => x.CODE == queryCode); TQuery ent = Fun.ClassToCopy <YL_QUERY, TQuery>(query); IList <QueryCfg> cfg = JSON.EncodeToEntity <IList <QueryCfg> >(query.QUERY_CFG_JSON); string whereStr = ""; ent.QUERY_CONF = MakeSql(gu, ent.QUERY_CONF, orderStr, whereJsonStr, paraList, ref whereStr, Fun.GetDataBaseType()); try { sqlStr = ent.QUERY_CONF; reDt = ExecuteSql(ent.QUERY_CONF, pageIndex, pageSize, orderStr, whereStr, query.DB_SERVER_ID.Value, cfg.Select(x => x.FieldName).ToList()); } catch (Exception e) { err.IsError = true; err.Message = e.Message; return(reDt); } } reDt.TableName = "tables1"; return(reDt); }
/// <summary> /// 查询一条 /// </summary> /// <param name="loginKey">登录凭证</param> /// <param name="err">错误信息</param> /// <param name="code">代码</param> /// <returns>查询一条</returns> public ProInterface.Models.TQuery QuerySingleByCode(string loginKey, ref ProInterface.ErrorInfo err, string code) { if (!UserCheckFunctioAuthority(loginKey, ref err, MethodBase.GetCurrentMethod())) { return(null); } using (DBEntities db = new DBEntities()) { var queryEnt = db.YL_QUERY.Where(x => x.CODE == code).ToList(); if (queryEnt.Count > 0) { var reEnt = Fun.ClassToCopy <YL_QUERY, ProInterface.Models.TQuery>(queryEnt[0]); GlobalUser gu = Global.GetUser(loginKey); if (gu == null) { err.IsError = true; err.Message = "登录超时"; return(null); } var allAuth = queryEnt[0].YL_ROLE_QUERY_AUTHORITY.Where(x => gu.RoleID.Contains(x.ROLE_ID)).ToList(); foreach (var t in allAuth) { if (reEnt.NoAuthority == null) { if (t.NO_AUTHORITY == null) { reEnt.NoAuthority = ""; } else { reEnt.NoAuthority = t.NO_AUTHORITY; } } else { if (reEnt.NoAuthority == null) { reEnt.NoAuthority = ""; } if (t.NO_AUTHORITY == null) { t.NO_AUTHORITY = ""; } var allNowAuth = reEnt.NoAuthority.Split(',').ToList(); var thisAuth = t.NO_AUTHORITY.Split(','); foreach (var t0 in reEnt.NoAuthority.Split(',').ToList()) { if (!thisAuth.Contains(t0)) { allNowAuth.Remove(t0); } } reEnt.NoAuthority = string.Join(",", allNowAuth); } } return(reEnt); } return(null); } }
public TUser UserSave(string loginKey, ref ErrorInfo err, TUser inEnt, IList <string> allPar) { if (!GlobalFun.UserCheckFunctioAuthority(loginKey, ref err, MethodBase.GetCurrentMethod())) { return(null); } using (DBEntities db = new DBEntities()) { try { var idPar = allPar.SingleOrDefault(x => x == "ID"); if (idPar != null) { allPar.Remove(idPar); } var userEnt = db.fa_user.SingleOrDefault(a => a.ID == inEnt.ID); if (userEnt == null) { userEnt = db.fa_user.SingleOrDefault(x => x.LOGIN_NAME == inEnt.LOGIN_NAME); } var loginEnt = db.fa_login.SingleOrDefault(x => x.LOGIN_NAME == inEnt.LOGIN_NAME); bool isAdd = false; if (userEnt == null) { isAdd = true; userEnt = Fun.ClassToCopy <ProInterface.Models.TUser, fa_user>(inEnt); if (userEnt.ID == 0) { userEnt.ID = Fun.GetSeqID <fa_user>(); } userEnt.CREATE_TIME = DateTime.Now; userEnt.LOGIN_COUNT = 0; userEnt.REGION = db.fa_district.SingleOrDefault(p => p.ID == inEnt.DISTRICT_ID).REGION; } else { if (db.fa_user.Where(x => x.LOGIN_NAME == inEnt.LOGIN_NAME && x.ID != userEnt.ID).Count() > 0) { err.IsError = true; err.Message = "登录工号已经存在"; return(null); } userEnt = Fun.ClassToCopy <ProInterface.Models.TUser, fa_user>(inEnt, userEnt, allPar); } if (loginEnt == null) { loginEnt = Fun.ClassToCopy <TUser, fa_login>(inEnt); loginEnt.ID = Fun.GetSeqID <fa_login>(); loginEnt.PASSWORD = AppSet.DefaultPwd.Md5(); loginEnt.REGION = userEnt.REGION; db.fa_login.Add(loginEnt); } else { if (db.fa_login.Where(x => x.LOGIN_NAME == loginEnt.LOGIN_NAME && x.ID != loginEnt.ID).Count() > 0) { err.IsError = true; err.Message = "登录工号已经存在"; return(null); } loginEnt = Fun.ClassToCopy <TUser, fa_login>(inEnt, loginEnt, allPar); loginEnt.PHONE_NO = inEnt.PHONE_NO; } if (allPar.Contains("RoleAllID")) { IList <int> allRoleId = new List <int>(); allRoleId = inEnt.RoleAllID.Split(',').Where(x => !string.IsNullOrEmpty(x)).Select(x => Convert.ToInt32(x)).ToList(); userEnt.fa_role.Clear(); userEnt.fa_role = db.fa_role.Where(x => allRoleId.Contains(x.ID)).ToList(); } if (isAdd) { db.fa_user.Add(userEnt); } userEnt.fa_district1.Clear(); if (!string.IsNullOrEmpty(inEnt.UserDistrict)) { var disArrList = inEnt.UserDistrict.Split(',').Select(x => Convert.ToInt32(x)).ToList(); userEnt.fa_district1 = db.fa_district.Where(x => disArrList.Contains(x.ID)).ToList(); } db.SaveChanges(); inEnt = Fun.ClassToCopy <fa_user, TUser>(userEnt, inEnt); inEnt.ID = userEnt.ID; GlobalFun.UserWriteLog(loginKey, MethodBase.GetCurrentMethod(), StatusType.UserLogType.Edit); return(inEnt); } catch (Exception e) { err.IsError = true; if (e.Message.IndexOf("EntityValidationErrors") > -1) { err.Message = Fun.GetDbEntityErrMess(e as DbEntityValidationException); } else { System.Data.Entity.Infrastructure.DbUpdateException t = e as System.Data.Entity.Infrastructure.DbUpdateException; err.Message = t.Message; } return(null); } } }
public void Execute(IJobExecutionContext context) { #region 添加脚本任务 ISchedulerFactory schedulerFactory = new StdSchedulerFactory(); IScheduler scheduler = schedulerFactory.GetScheduler(); string jobGroupName = "ScriptJobGroup"; string triGroupName = "ScriptTriGroup"; string jobNamePex = "ScriptJob_"; string triNamePex = "ScriptTri_"; //所有需要运行的脚本 var allScript = AllScript(); var triKeyArr = scheduler.GetTriggerKeys(GroupMatcher <TriggerKey> .GroupEquals("ScriptTriGroup")); //删除触发器,删除这个触发器没有在运行的脚本里 foreach (var t in triKeyArr) { var trigger = scheduler.GetTrigger(t); IJobDetail job = scheduler.GetJobDetail(trigger.JobKey); var tmp = allScript.SingleOrDefault(x => t.Name == triNamePex + x.ID.ToString()); if (tmp == null) { StopTask(Convert.ToInt32(t.Name.Replace(triNamePex, ""))); scheduler.DeleteJob(trigger.JobKey); logger.InfoFormat("脚本服务 移除触发器ID{0}", t.Name); } } foreach (var t in allScript) { try { //新任务 if (triKeyArr.SingleOrDefault(x => x.Name == triNamePex + t.ID.ToString()) == null) { IJobDetail job = JobBuilder.Create <ScriptTaskAddQuartz>() .WithIdentity(new JobKey(jobNamePex + t.ID.ToString(), jobGroupName)) .StoreDurably() .Build(); ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity(new TriggerKey(triNamePex + t.ID.ToString(), triGroupName)) .ForJob(job) .StartNow().WithCronSchedule(t.RUN_WHEN) .Build(); logger.InfoFormat("脚本服务 添加脚本触发器ID{0}", trigger.Key.Name); scheduler.ScheduleJob(job, trigger); } else { ICronTrigger trigger = (ICronTrigger)scheduler.GetTrigger(new TriggerKey(triNamePex + t.ID.ToString(), triGroupName)); IJobDetail job = scheduler.GetJobDetail(trigger.JobKey); if (trigger.CronExpressionString != t.RUN_WHEN) { logger.InfoFormat("脚本服务 修改触发器【{0}】的时间表达式【{1}】为【{2}】", trigger.Key.Name, trigger.CronExpressionString, t.RUN_WHEN); trigger.CronExpressionString = t.RUN_WHEN; scheduler.DeleteJob(trigger.JobKey); scheduler.ScheduleJob(job, trigger); } } } catch (Exception e) { Dictionary <string, object> dicStart = new Dictionary <string, object>(); dicStart.Add("STATUS", "禁用"); FunSqlToClass.UpData <SCRIPT>( ConfigurationManager.AppSettings["dbType"], ConfigurationManager.AppSettings["dbConnSt"], dicStart, string.Format("where ID={0} ", t.ID), ConfigurationManager.AppSettings["dbPrefix"]); logger.InfoFormat("脚本服务 添加脚本触发器任务【{0}】,失败【{1}】", t.CODE, e.Message); } } #endregion #region 运行脚本任务 //获取正在等待的任务 foreach (var task in AllScriptTask()) { try { #region 检测运算实例是否存在,并把结束了的线程终止 QuartzRunStatus nowQrs = new QuartzRunStatus(); IList <QuartzRunStatus> qrs = new List <QuartzRunStatus>(); try { qrs = ProInterface.JSON.EncodeToEntity <IList <QuartzRunStatus> >(System.IO.File.ReadAllText(statusLogPath)); } catch { } //清理2小时还没有远行完的口径 foreach (var t in qrs.Where(x => x.StatusTime.AddHours(2) < DateTime.Now).ToList()) { qrs.Remove(t); } if (qrs == null) { qrs = new List <QuartzRunStatus>(); } nowQrs = qrs.SingleOrDefault(x => x.JobName == "ScriptID_" + task.SCRIPT_ID); if (nowQrs == null) { nowQrs = new QuartzRunStatus(); } //表示该脚本正在运行,则退出 if (nowQrs.IsRun) { continue; } if (qrs.Count > ProInterface.AppSet.ScriptRunMaxNum) { logger.InfoFormat("执行脚本数【{0}】已经超过最大任务数【{1}】了", qrs.Count, ProInterface.AppSet.ScriptRunMaxNum); return; } nowQrs.IsRun = true; nowQrs.JobName = "ScriptID_" + task.SCRIPT_ID; nowQrs.StatusTime = DateTime.Now; if (qrs.SingleOrDefault(x => x.JobName == "ScriptID_" + task.SCRIPT_ID) == null) { qrs.Add(nowQrs); } Fun.WriteAllText(statusLogPath, ProInterface.JSON.DecodeToStr(qrs)); #endregion logger.InfoFormat("执行脚本 开始脚本【{0}】,任务ID【{1}】", task.SCRIPT_ID, task.ID); Dictionary <string, object> dicStart = new Dictionary <string, object>(); dicStart.Add("RUN_STATE", "运行"); dicStart.Add("START_TIME", DateTime.Now); dicStart.Add("RETURN_CODE", null); dicStart.Add("END_TIME", null); dicStart.Add("DISABLE_DATE", null); dicStart.Add("DISABLE_REASON", null); FunSqlToClass.UpData <SCRIPT_TASK>( ConfigurationManager.AppSettings["dbType"], ConfigurationManager.AppSettings["dbConnSt"], dicStart, string.Format("where ID={0} ", task.ID), ConfigurationManager.AppSettings["dbPrefix"]); FunSqlToClass.NonQuery("DELETE FROM YL_SCRIPT_TASK_LOG where SCRIPT_TASK_ID=" + task.ID, ConfigurationManager.AppSettings["dbType"], ConfigurationManager.AppSettings["dbConnSt"], ConfigurationManager.AppSettings["dbPrefix"]); ProServer.Service db = new Service(); ProInterface.ErrorInfo error = new ProInterface.ErrorInfo(); object obj = db.ScriptTaskStart(ref error, Convert.ToInt32(task.ID)); if (error.IsError) { Dictionary <string, object> dic = new Dictionary <string, object>(); dic.Add("RUN_STATE", "停止"); dic.Add("RETURN_CODE", "失败"); dic.Add("END_TIME", DateTime.Now); dic.Add("DISABLE_DATE", DateTime.Now); if (error.Message != null) { if (error.Message.Length > 25) { dic.Add("DISABLE_REASON", error.Message.Substring(0, 25)); } else { dic.Add("DISABLE_REASON", error.Message); } } FunSqlToClass.UpData <SCRIPT_TASK>( ConfigurationManager.AppSettings["dbType"], ConfigurationManager.AppSettings["dbConnSt"], dic, string.Format("where ID={0} ", task.ID), ConfigurationManager.AppSettings["dbPrefix"]); logger.InfoFormat("执行脚本 脚本【{0}】,任务ID【{1}】 出错:{2}", task.SCRIPT_ID, task.ID, error.Message); } else { logger.InfoFormat("执行脚本 结束脚本【{0}】,任务ID【{1}】", task.SCRIPT_ID, task.ID); } } catch (Exception e) { logger.InfoFormat("分析 结束脚本【{0}】,任务ID【{1}】,出错:{2}", task.SCRIPT_ID, task.ID, e.ToString()); } var qrsEnd = ProInterface.JSON.EncodeToEntity <IList <QuartzRunStatus> >(System.IO.File.ReadAllText(statusLogPath)); var nowQrsEnd = qrsEnd.SingleOrDefault(x => x.JobName == "ScriptID_" + task.SCRIPT_ID); if (nowQrsEnd != null) { qrsEnd.Remove(nowQrsEnd); Fun.WriteAllText(statusLogPath, ProInterface.JSON.DecodeToStr(qrsEnd)); } } #endregion }
public object UserLogin(ref ErrorInfo err, string loginName, string password, string loginIP) { GlobalUser gu = new GlobalUser(); if (string.IsNullOrEmpty(loginName) || string.IsNullOrEmpty(password)) { err.IsError = true; err.Message = "用户名和密码不能为空"; return(gu); } using (DBEntities db = new DBEntities()) { var LoginArr = db.fa_login.Where(x => x.LOGIN_NAME == loginName).ToList(); var Login = new fa_login(); if (LoginArr.Count() > 0) { Login = LoginArr[0]; } var user = db.fa_user.SingleOrDefault(x => x.LOGIN_NAME == loginName); if (Login.IS_LOCKED == 1) { err.IsError = true; err.Message = string.Format("用户已被锁定【{0}】", Login.LOCKED_REASON); return(gu); } if (Login == null || user == null) { err.IsError = true; err.Message = "用户名或者密码错误"; return(gu); } else { if (Login.PASSWORD.ToUpper() != password.Md5().ToUpper() && Login.PASSWORD.ToUpper() != password.SHA1().ToUpper()) { int times = 5; if (Login.FAIL_COUNT == 0) { Login.FAIL_COUNT = 1; } if (password != "Easyman123@@@") { err.IsError = true; err.Message = string.Format("用户名或者密码错误,还有{0}次尝试机会", (times - Login.FAIL_COUNT).ToString()); if (Login.FAIL_COUNT >= times) { user.IS_LOCKED = 1; Login.IS_LOCKED = 1; Login.LOCKED_REASON = string.Format("用户连续5次错误登陆,帐号锁定。"); Login.FAIL_COUNT = 0; } else { Login.FAIL_COUNT++; } db.SaveChanges(); return(gu); } } else { Login.FAIL_COUNT = 0; } db.SaveChanges(); //检测密码复杂度 if (!Fun.CheckPassword(ref err, password)) { err.Message = string.Format("密码复杂度不够:{0}", err.Message); err.IsError = true; return(gu); } //if (password.Equals(ProInterface.AppSet.DefaultPwd)) //{ // err.Message = string.Format("密码复杂度不够:{0}", "不能是系统默认密码"); // err.IsError = true; // return gu; //} return(UserLogin(ref err, loginName, loginIP)); } } }
public bool RoleSave(string loginKey, ref ErrorInfo err, TRole inEnt, IList <string> allPar) { if (!GlobalFun.UserCheckFunctioAuthority(loginKey, ref err, MethodBase.GetCurrentMethod())) { return(false); } using (DBEntities db = new DBEntities()) { try { var ent = db.fa_role.SingleOrDefault(a => a.ID == inEnt.ID); bool isAdd = false; if (ent == null) { isAdd = true; ent = Fun.ClassToCopy <ProInterface.Models.ROLE, fa_role>(inEnt); ent.ID = Fun.GetSeqID <fa_role>(); } else { ent = Fun.ClassToCopy <ProInterface.Models.ROLE, fa_role>(inEnt, ent, allPar); } ent.fa_module.Clear(); IList <int> moduleID = inEnt.ModuleAllStr.Split(',').Select(x => Convert.ToInt32(x)).ToList(); ent.fa_module = db.fa_module.Where(x => moduleID.Contains(x.ID)).ToList(); inEnt.RoleConfigs = JSON.EncodeToEntity <IList <ROLE_CONFIG> >(inEnt.RoleConfigsStr); foreach (var t in inEnt.RoleConfigs) { var cfg = ent.fa_role_config.SingleOrDefault(x => x.NAME == t.NAME); if (cfg == null) { ent.fa_role_config.Add(new fa_role_config { NAME = t.NAME, ROLE_ID = ent.ID, VALUE = t.VALUE }); } else { cfg.VALUE = t.VALUE; } } foreach (var t in ent.fa_role_config.ToList()) { if (inEnt.RoleConfigs.SingleOrDefault(x => x.NAME == t.NAME) == null) { db.fa_role_config.Remove(t); } } if (isAdd) { db.fa_role.Add(ent); } db.SaveChanges(); GlobalFun.UserWriteLog(loginKey, MethodBase.GetCurrentMethod(), StatusType.UserLogType.Edit); return(true); } catch (DbEntityValidationException e) { err.IsError = true; err.Message = e.Message; err.Excep = e; return(false); } } }
/// <summary> /// 修改任务 /// </summary> /// <param name="loginKey">登录凭证</param> /// <param name="err">错误信息</param> /// <param name="inEnt">实体类</param> /// <param name="allPar">更新的参数</param> /// <returns>修改任务</returns> public bool TaskSave(string loginKey, ref ProInterface.ErrorInfo err, ProInterface.Models.TTask inEnt, IList <string> allPar) { if (!UserCheckFunctioAuthority(loginKey, ref err, MethodBase.GetCurrentMethod())) { return(false); } using (DBEntities db = new DBEntities()) { try { GlobalUser gu = Global.GetUser(loginKey); if (gu == null) { err.IsError = true; err.Message = "登录超时"; return(false); } var ent = db.YL_TASK.SingleOrDefault(a => a.ID == inEnt.ID); YL_TASK_FLOW taskFlow0 = new YL_TASK_FLOW(); bool isAdd = false; if (ent == null) { isAdd = true; if (inEnt.FLOW_ID != null && inEnt.FLOW_ID.Value != 0) { #region 非任务工单 YL_FLOW flow = db.YL_FLOW.SingleOrDefault(x => x.ID == inEnt.FLOW_ID); TNode tnode = new TNode(); tnode.FlowID = inEnt.FLOW_ID.Value; tnode.TaskName = inEnt.TASK_NAME; tnode.AllFilesStr = inEnt.AllFilesStr; tnode.UserIdArrStr = inEnt.UserIdArrStr; tnode.Remark = inEnt.REMARK; FunTask.StartTask(db, ref err, gu, tnode, inEnt.NowSubmitType); #endregion } else { #region 任务工单 FunTask.StartTaskNoFlow(db, ref err, gu, inEnt.TASK_NAME, inEnt.REMARK, inEnt.AllFilesStr, inEnt.UserIdArrStr, inEnt.ROLE_ID_STR); #endregion } } else { ent = Fun.ClassToCopy <ProInterface.Models.TASK, YL_TASK>(inEnt, ent, allPar); } db.SaveChanges(); UserWriteLog(loginKey, MethodBase.GetCurrentMethod(), StatusType.UserLogType.Edit); return(true); } catch (DbEntityValidationException e) { err.IsError = true; err.Message = Fun.GetDbEntityErrMess(e); return(false); } catch (Exception e) { err.IsError = true; err.Message = Fun.GetExceptionMessage(e); return(false); } } }
public static IEnumerable <T> GetListOrder <T>(IEnumerable <T> inList, string orderFiled, string orderType, ref ProInterface.ErrorInfo error) { if (!string.IsNullOrEmpty(orderFiled)) { try { var dateType = Fun.GetClassProperType <T>(orderFiled).ToLower(); switch (dateType) { case "decimal": Func <T, decimal> whereFuncDecimal = StringToLambda.LambdaParser.Compile <Func <T, decimal> >("x=>x." + orderFiled); if (orderType == "asc") { inList = inList.OrderBy(whereFuncDecimal); } else { inList = inList.OrderByDescending(whereFuncDecimal); } break; case "int": Func <T, int> whereFuncInt = StringToLambda.LambdaParser.Compile <Func <T, int> >("x=>x." + orderFiled); if (orderType == "asc") { inList = inList.OrderBy(whereFuncInt); } else { inList = inList.OrderByDescending(whereFuncInt); } break; case "int32": Func <T, Int32> whereFuncInt32 = StringToLambda.LambdaParser.Compile <Func <T, Int32> >("x=>x." + orderFiled); if (orderType == "asc") { inList = inList.OrderBy(whereFuncInt32); } else { inList = inList.OrderByDescending(whereFuncInt32); } break; case "datetime": Func <T, DateTime> whereFuncDatetime = StringToLambda.LambdaParser.Compile <Func <T, DateTime> >("x=>x." + orderFiled); if (orderType == "asc") { inList = inList.OrderBy(whereFuncDatetime); } else { inList = inList.OrderByDescending(whereFuncDatetime); } break; default: Func <T, string> whereFunc = StringToLambda.LambdaParser.Compile <Func <T, string> >("x=>x." + orderFiled); if (orderType == "asc") { inList = inList.OrderBy(whereFunc); } else { inList = inList.OrderByDescending(whereFunc); } break; } return(inList); } catch { error.IsError = true; error.Message = "条件表态式[" + orderFiled + "]有误"; } } return(inList); }
public bool FlowSave(string loginKey, ref ErrorInfo err, TFlow ent) { using (DBEntities db = new DBEntities()) { ent.FlowList = JSON.EncodeToEntity <IList <TFlowFlownodeFlow> >(ent.FlowListStr); ent.Idxy = JSON.EncodeToEntity <IList <IdXY> >(ent.X_Y); if (string.IsNullOrEmpty(ent.FLOW_TYPE)) { ent.FLOW_TYPE = "默认"; } var useId = ent.FlowList.Select(x => x.FROM_FLOWNODE_ID).ToList(); foreach (var t in ent.FlowList) { if (!useId.Contains(t.TO_FLOWNODE_ID)) { useId.Add(t.TO_FLOWNODE_ID); } } ent.Idxy = ent.Idxy.Where(x => useId.Contains(x.Id)).ToList(); var flow = db.YL_FLOW.SingleOrDefault(x => x.ID == ent.ID); if (flow == null) { flow = Fun.ClassToCopy <TFlow, YL_FLOW>(ent); flow.ID = Fun.GetSeqID <YL_FLOW>(); db.YL_FLOW.Add(flow); } else { flow = Fun.ClassToCopy <TFlow, YL_FLOW>(ent, flow); } #region 除节点 foreach (var t in flow.YL_FLOW_FLOWNODE_FLOW.ToList()) { if (ent.FlowList.Where(x => x.FROM_FLOWNODE_ID == t.FROM_FLOWNODE_ID && x.TO_FLOWNODE_ID == t.TO_FLOWNODE_ID).Count() == 0) { t.YL_ROLE.Clear(); db.YL_FLOW_FLOWNODE_FLOW.Remove(t); } } #endregion foreach (var t in ent.FlowList) { if (!string.IsNullOrEmpty(t.AllRoleStr)) { string[] tmpRoleArr = t.AllRoleStr.Trim().Split(','); if (tmpRoleArr.Length > 0) { t.AllRoleIDList = tmpRoleArr.Select(x => Convert.ToInt32(x)).ToList(); } } var thisFlow = flow.YL_FLOW_FLOWNODE_FLOW.SingleOrDefault(x => x.FROM_FLOWNODE_ID == t.FROM_FLOWNODE_ID && x.TO_FLOWNODE_ID == t.TO_FLOWNODE_ID); if (thisFlow == null) { YL_FLOW_FLOWNODE_FLOW flowF = Fun.ClassToCopy <TFlowFlownodeFlow, YL_FLOW_FLOWNODE_FLOW>(t); flowF.YL_ROLE = db.YL_ROLE.Where(x => t.AllRoleIDList.Contains(x.ID)).ToList(); flowF.ID = Fun.GetSeqID <YL_FLOW_FLOWNODE_FLOW>(); flowF.FLOW_ID = flow.ID; db.YL_FLOW_FLOWNODE_FLOW.Add(flowF); } else { thisFlow = Fun.ClassToCopy <TFlowFlownodeFlow, YL_FLOW_FLOWNODE_FLOW>(t, thisFlow); thisFlow.YL_ROLE.Clear(); thisFlow.YL_ROLE = db.YL_ROLE.Where(x => t.AllRoleIDList.Contains(x.ID)).ToList(); thisFlow = Fun.ClassToCopy <TFlowFlownodeFlow, YL_FLOW_FLOWNODE_FLOW>(t); } } try { db.SaveChanges(); } catch (DbEntityValidationException e) { err.IsError = true; err.Message = Fun.GetDbEntityErrMess(e); return(false); } catch (Exception e) { err.IsError = true; err.Message = Fun.GetExceptionMessage(e); return(false); } } return(true); }
public void Execute(IJobExecutionContext context) { try { logger.Info("启动自动下载数据 开始"); var downID = Convert.ToInt32(context.JobDetail.Key.Name.Replace("DownDataJob_", "")); logger.Info(string.Format("启动自动下载数据 数据ID{0}", downID)); var down = FunSqlToClass.ClassSingle <DATA_DOWN>( ConfigurationManager.AppSettings["dbType"], ConfigurationManager.AppSettings["dbConnSt"], "where ID = " + downID, ConfigurationManager.AppSettings["dbPrefix"] ); string tableName = ProServer.Fun.ReplaceDataTime(down.CREATE_TABLE_NAME, DateTime.Now); var eventEnt = new DATA_DOWN_EVENT(); eventEnt.ID = FunSqlToClass.GetSeqID <DATA_DOWN_EVENT>( ConfigurationManager.AppSettings["dbType"], ConfigurationManager.AppSettings["dbConnSt"], ConfigurationManager.AppSettings["dbPrefix"] ); eventEnt.TARGET_NAME = tableName; eventEnt.ALL_NUM = 0; eventEnt.LAST_MONTH_NUM = 0; eventEnt.PATH = down.TO_PATH; eventEnt.DATA_DOWN_ID = downID; eventEnt.START_TIME = DateTime.Now; FunSqlToClass.Save <DATA_DOWN_EVENT>( ConfigurationManager.AppSettings["dbType"], ConfigurationManager.AppSettings["dbConnSt"], eventEnt, ConfigurationManager.AppSettings["dbPrefix"] ); string createScript = ""; if (!string.IsNullOrEmpty(down.CREATE_SCRIPT)) { createScript = down.CREATE_SCRIPT.Replace("{@TABLE_NAME}", eventEnt.TARGET_NAME); } var allDataDownTo = FunSqlToClass.SqlToList <ProInterface.Models.DATA_DOWN_TO>(string.Format("select * from YL_DATA_DOWN_TO where DATA_DOWN_ID='{0}'", downID), ConfigurationManager.AppSettings["dbType"], ConfigurationManager.AppSettings["dbConnSt"]); foreach (var to in allDataDownTo) { var toServer = FunSqlToClass.ClassSingle <DB_SERVER>( ConfigurationManager.AppSettings["dbType"], ConfigurationManager.AppSettings["dbConnSt"], "where ID = " + to.DB_SERVER_ID, ConfigurationManager.AppSettings["dbPrefix"] ); #region 在目标服务器上创建表 var db = new ProServer.ScriptExt(); try { try { db.execute("drop table " + eventEnt.TARGET_NAME, toServer); } catch (Exception e) { } db.execute(createScript, toServer); } catch (Exception e) { logger.Info(string.Format("在服务器【{0}】上建表失败:\r\nSQL:{1}\r\n{2}", toServer.NICKNAME, createScript, e.Message)); } #endregion var allDataDownForm = FunSqlToClass.SqlToList <ProInterface.Models.DB_SERVER>(string.Format("select a.* from YL_DB_SERVER a,YL_DATA_DOWN_FORM b where a.ID=b.DB_SERVER_ID and b.DATA_DOWN_ID='{0}'", downID), ConfigurationManager.AppSettings["dbType"], ConfigurationManager.AppSettings["dbConnSt"]); foreach (var from in allDataDownForm) { DATA_DOWN_TASK task = new DATA_DOWN_TASK(); task.ID = FunSqlToClass.GetSeqID <DATA_DOWN_EVENT>( ConfigurationManager.AppSettings["dbType"], ConfigurationManager.AppSettings["dbConnSt"], ConfigurationManager.AppSettings["dbPrefix"] ); task.NAME = eventEnt.TARGET_NAME; task.SELECT_SCRIPT = down.SELECT_SCRIPT; task.EVENT_ID = eventEnt.ID; #region 替换SELECT_SCRIPT foreach (var replace in JSON.EncodeToEntity <IList <KV> >(to.REPLACE_STR)) { task.SELECT_SCRIPT = task.SELECT_SCRIPT.Replace(replace.K, replace.V); } task.SELECT_SCRIPT = ProServer.Fun.ReplaceDataTime(task.SELECT_SCRIPT, DateTime.Now); #endregion #region 生成@[00-99] if (task.SELECT_SCRIPT.IndexOf("@") != -1) { task.SELECT_SCRIPT = Fun.GetSelectScript(task.SELECT_SCRIPT); } #endregion //设置存放路径 task.TO_PATH = ProServer.Fun.ReplaceDataTime(down.TO_PATH, DateTime.Now); int thisAllNum = 0; task.ALL_NUM = thisAllNum; int upMonthNum = 0; task.LAST_MONTH_NUM = upMonthNum; task.SELECT_DB_SERVER = from.ID; task.SELECT_SERVER = string.Format("(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={0})(PORT={1})))(CONNECT_DATA=(SERVER=DEDICATED)(SID={2})))", from.IP, from.PORT, from.DBNAME); task.SELECT_UID = from.UID; task.SELECT_PWD = from.PASSWORD; task.EVENT_TYPE = 1; if (down.SUCC_SCRIPT != null) { task.SUCC_SCRIPT = down.SUCC_SCRIPT.Replace("{@TABLE_NAME}", eventEnt.TARGET_NAME); } task.TO_DB_SERVER = toServer.ID; task.TO_SERVER = toServer.DBNAME; task.TO_UID = toServer.UID; task.TO_PWD = toServer.PASSWORD; task.CREATE_SCRIPT = createScript; task.ERROR_NUM = 0; task.STATUS = "等待"; task.PAGE_SIZE = down.PAGE_SIZE; task.SPLIT_STR = down.SPLIT_STR; task.IS_CANCEL = 0; task.ORDER_NUM = task.ID; FunSqlToClass.Save <DATA_DOWN_TASK>( ConfigurationManager.AppSettings["dbType"], ConfigurationManager.AppSettings["dbConnSt"], task, ConfigurationManager.AppSettings["dbPrefix"] ); } } logger.Info("启动自动下载数据 结束"); } catch (Exception ex) { logger.Error("启动自动下载数据 运行异常", ex); } }