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);
            }
        }
Exemple #6
0
 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);
            }

        }
Exemple #9
0
 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;
            //    }
            //}

        }
Exemple #11
0
        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;
        }
Exemple #12
0
        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);
     }
 }
Exemple #14
0
 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();

        }