public void MakeJubenErrorLog (string jubenName,JubenType jubenType, JubenErrorType jubenErrorType, string logs) { using(var db = DbContextFactory.CreateDbContext()) { var xiake = db.Xiakes.FirstOrDefault(a => a.XiakeName == Thread.CurrentPrincipal.Identity.Name); if(xiake == null) return; var log = new JubenErrorLog() { JubenType = jubenType, JubenErrorType = jubenErrorType, Xiake = xiake, JubenName = jubenName, Logs = logs }; db.JubenErrorLogs.Add(log); try { db.SaveChanges(); } catch(Exception) { } } }
private float GetStepProcessValue(RunningStepsData data, JubenType? jubenType) { if(jubenType == null) return 1; var index = GetStepIndex(data, jubenType.Value ); var count = data.JubenDayDatas.Length; return (float)index / (float)count; }
public long AddJuben (string title, bool isEnable, JubenType jubenType, string commands) { lock (LockObject) { Init(); return mClient.Service.AddJuben(title,isEnable,jubenType,commands); } }
public void MakeJubenErrorLog (string jubenName, JubenType jubenType, JubenErrorType jubenErrorType, string logs) { lock (LockObject) { Init(); mClient.Service.MakeJubenErrorLog(jubenName,jubenType,jubenErrorType,logs); } }
public void FinishStep (long renwuId, JubenType currentJubenType, Dictionary<string, string> parms) { lock (LockObject) { Init(); mClient.Service.FinishStep(renwuId, currentJubenType, parms); } }
private int GetStepIndex (RunningStepsData data, JubenType? jubenType) { for(var i = 0; i < data.JubenDayDatas.Length; i++) { if(data.JubenDayDatas[i].Juben == jubenType) return i; } return -1; }
public CombinationJubenErrorLogData SearchLogsByMgmt (JubenType[] jubenTypes, JubenErrorType[] errorTypes, DateTime startTime, DateTime endTime, bool isTimeRangeRequired, long lastId) { lock (LockObject) { Init(); return mClient.Service.SearchLogsByMgmt(jubenTypes,errorTypes,startTime,endTime,isTimeRangeRequired, lastId); } }
public CombinationRenwuData2 SearchRenwusByZg (JubenType[] jubenTypes, long[] dianpus, DateTime startTime, DateTime endTime, bool isTimeRangeRequired, long lastId) { lock (LockObject) { Init(); return mClient.Service.SearchRenwusByZg(jubenTypes, dianpus, startTime, endTime, isTimeRangeRequired, lastId); } }
public long AddJuben(string title, bool isEnable,JubenType jubenType, string commands ) { using (var db = DbContextFactory.CreateDbContext()) { var juben = new Juben() { Title = title, IsEnable = isEnable, JubenType = jubenType, Commands = commands }; db.Jubens.Add(juben); db.SaveChanges(); return juben.Id; } }
private BangpaiType? GetBangpaiType(JubenType juben) { var t = typeof(BangpaiType); foreach(var item in t.GetFields()) { var dis = item.GetCustomAttributes(typeof(AllowGoodsUrlAttribute)); foreach (var d in dis) { var c = d as AllowGoodsUrlAttribute; if (c.JubenType == juben) return (BangpaiType)item.GetValue(null ) ; } } return null; //var fs = t.GetFields(); //foreach (var item in fs) //{ // var dis = item.GetCustomAttributes(typeof(AllowGoodsUrlAttribute)); // foreach (var d in dis) // { // var c = d as AllowGoodsUrlAttribute; // if(c.JubenType == juben) // return item; // } //} }
public CombinationRenwuData2 SearchRenwusByMgmt(JubenType[] jubenTypes, BangpaiType[] bangpaiTypes , DateTime startTime, DateTime endTime, bool isTimeRangeRequired, long lastId) { var result = new CombinationRenwuData2(); using (var db = DbContextFactory.CreateDbContext()) { var xiake = db.Xiakes.Include(a => a.Credits).FirstOrDefault(a => a.XiakeName == Thread.CurrentPrincipal.Identity.Name); if (xiake.UserType != XiakeType.Xiaoer && xiake.UserType != XiakeType.Tangzhu && xiake.UserType != XiakeType.Mengzhu) throw new FaultException("非管理账号不可调用"); IQueryable<Renwu> renws = db.Renwus.OrderByDescending(a => a.Id); if (lastId != 0) { renws = renws.Where(a => a.Id < lastId); } renws = renws.Where(a => jubenTypes.Contains(a.NextStep.Value )); renws = renws.Where(a => bangpaiTypes.Contains(a.Bangpai)); if (isTimeRangeRequired) { renws = renws.Where(a => a.RunTime >= startTime && a.RunTime <= endTime); } if (lastId == 0) { result.TotalCount = renws.Count(); } renws = renws.Include(a => a.Biao).Include(a => a.Biaoshi).Include(a=>a.Biaoju).Include(a=>a.Biao.Dianpu).Include(a=>a.Biao.Zhanggui); renws = renws.Take(DomainDefinition.PAGE_SIZE); foreach (var dp in renws) { var x = new RenwuData2() { ID = dp.Id, BiaoshiName = dp.Biaoshi.Title, BangpaiType = dp.Bangpai, Price = dp.Biao.Price, RunningTime = dp.RunTime, SearchWord = dp.Biao.SearchWord, NextStep = dp.NextStep.Value , Steps = dp.Steps, Salary = dp.Biao.Salary, Biaoju = dp.Biaoju.XiakeName, BiaojuId = dp.Biaoju.Id, ZhangguiId = dp.Biao.Zhanggui.Id, ZhangguiName = dp.Biao.Zhanggui.XiakeName, ZhangguiQQ = dp.Biao.Zhanggui.QQ, Dianpu = dp.Biao.Dianpu.Name, BiaojuQQ = dp.Biaoju.QQ , IsDisabled = dp.IsDisabled }; result.Items.Add(x); } if (result.Items.Count < DomainDefinition.PAGE_SIZE) { result.IsLoadedAllData = true; } } return result; }
public void FinishStep (long renwuId, JubenType currentJubenType, System.Collections.Generic.Dictionary<string, string> parms) { using(var db = DbContextFactory.CreateDbContext()) { var xiake = db.Xiakes.Include(a => a.Credits).FirstOrDefault(a => a.XiakeName == Thread.CurrentPrincipal.Identity.Name); if ( xiake.UserType != XiakeType.Biaoju) throw new FaultException("非镖局不可调用"); var renwu = db.Renwus.Include(a=>a.Biaoju) .Include(a=>a.Biaoju.Credits) .Include(a=>a.Biao) .Include(a=>a.Biao.Dianpu) .Include(a=>a.Biao.Zhanggui) .Include(a=>a.Biaoshi) .Include(a=>a.Biao.Zhanggui.Credits).FirstOrDefault(a => a.Id == renwuId); if(renwu == null) throw new FaultException("没有此任务存在!"); if(renwu.Biaoju.XiakeName != Thread.CurrentPrincipal.Identity.Name ) throw new FaultException("此任务不属于您!"); if(renwu.NextStep != currentJubenType) throw new FaultException("错误的运行步骤"); var steps = RunningStepsData.MakeDataWithString(renwu.Steps); var nextIndex = -1; for(var i = 0; i < steps.JubenDayDatas.Length; i++) { if(steps.JubenDayDatas[i].Juben == currentJubenType) { nextIndex = i + 1; } } if(nextIndex == -1) throw new FaultException("错误的运行步骤"); if(nextIndex >= steps.JubenDayDatas.Length) { renwu.NextStep = null; var salary= Convert.ToInt32( renwu.Biao.Salary); xiake.Credits.FreeCredits -= salary; xiake.Credits.FreeCredits += salary; var zg = renwu.Biao.Zhanggui; zg.Credits.FreezeCredits -= salary; renwu.Biao.Running -= 1; renwu.Biao.Finished += 1; mMasterServiceProxy.PushCreditsChangeMessage(xiake.Id, xiake.Credits.FreeCredits, xiake.Credits.FreezeCredits); mMasterServiceProxy.PushCreditsChangeMessage(zg.Id, zg.Credits.FreeCredits, zg.Credits.FreezeCredits); } else { renwu.NextStep = steps.JubenDayDatas[nextIndex].Juben; } renwu.FinishTime = DateTime.Now; if (currentJubenType == JubenType.TaobaoPay) { if(!parms.ContainsKey(JubenParameterType.DingdanID.ToString())) throw new FaultException("缺少参数"); if (!parms.ContainsKey(JubenParameterType.GoodsID.ToString())) throw new FaultException("缺少参数"); if (!parms.ContainsKey(JubenParameterType.DingdinPrice.ToString())) throw new FaultException("缺少参数"); if (!parms.ContainsKey(JubenParameterType.GoodsName.ToString())) throw new FaultException("缺少参数"); if (!parms.ContainsKey(JubenParameterType.PayTime.ToString())) throw new FaultException("缺少参数"); var dingdanID = parms[JubenParameterType.DingdanID.ToString()]; var goodsID = parms[JubenParameterType.GoodsID.ToString()]; var dingdanPrice = Convert.ToInt16( parms[JubenParameterType.DingdinPrice.ToString()]); var goodsName = parms[JubenParameterType.GoodsName.ToString()]; var payTime = Convert.ToDateTime(parms[JubenParameterType.PayTime.ToString()]); var dd = new Dingdan() { Biaoshi = renwu.Biaoshi, Bangpai = renwu.Biao.Bangpai, DateTime = payTime, Price = dingdanPrice, SrcId = dingdanID, Salary = renwu.Biao.Salary, Goods = goodsName, Dianpu = renwu.Biao.Dianpu }; db.Dingdans.Add(dd); } try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { throw new FaultException("并发错误"); } } }
public JubenData GetEnableJuben (JubenType jubenType) { lock (LockObject) { Init(); return mClient.Service.GetEnableJuben(jubenType); } }
public JubenData GetEnableJuben( JubenType jubenType) { using (var db = DbContextFactory.CreateDbContext()) { var juben = db.Jubens.FirstOrDefault(a => a.IsEnable && a.JubenType ==jubenType); if (juben == null) throw new FaultException("无剧本可供运行"); return new JubenData(){ ID = juben.Id , Commands =juben.Commands, Title = juben.Title }; } }
public CombinationJubenErrorLogData SearchLogsByMgmt (JubenType[] jubenTypes, JubenErrorType[] errorTypes, DateTime startTime, DateTime endTime, bool isTimeRangeRequired, long lastId) { var result = new CombinationJubenErrorLogData(); using (var db = DbContextFactory.CreateDbContext()) { var xiake = db.Xiakes.FirstOrDefault(a => a.XiakeName == Thread.CurrentPrincipal.Identity.Name); if (xiake.UserType != XiakeType.Tangzhu && xiake.UserType != XiakeType.Mengzhu) throw new FaultException("非管理账号不可调用"); IQueryable<JubenErrorLog> logs = db.JubenErrorLogs.OrderByDescending(a => a.Id); if (lastId != 0) { logs = logs.Where(a => a.Id < lastId); } logs = logs.Where(a => jubenTypes.Contains(a.JubenType)); logs = logs.Where(a => errorTypes.Contains(a.JubenErrorType)); if (isTimeRangeRequired) { logs = logs.Where(a => a.CreateTime >= startTime && a.CreateTime <= endTime); } if (lastId == 0) { result.TotalCount = logs.Count(); } logs = logs.Include(a => a.Xiake); logs = logs.Take(DomainDefinition.PAGE_SIZE); foreach (var dp in logs) { var x = new JubenErrorLogData() { Id = dp.Id, CreateTime = dp.CreateTime, JubenType = dp.JubenType, JubenErrorType = dp.JubenErrorType, Logs = dp.Logs, Xiake = dp.Xiake.XiakeName, XiakeId = dp.Xiake.Id, JubenName = dp.JubenName }; result.Items.Add(x); } if (result.Items.Count < DomainDefinition.PAGE_SIZE) { result.IsLoadedAllData = true; } } return result; }
public void Run(string jubenName, JubenType jubenType, RunJuben juben, string title, IDictionary<string, string> pars, Action<IDictionary<string, string>> completed, Action<Exception> failed) { ClearCookies(); JubenName = jubenName; JubenType = jubenType; mLogBuilder.Clear(); Juben = juben; mParamers = pars; mCompletedAction = completed; this.Owner = Application.Current.MainWindow; this.Title = title; this.Show(); Init(); RecordLog("开始运行剧本", LogLevel.Info); Run(); }