public JsonResult MakeRenwuWithBiao(MakeRenwuWithBiaoPostModel model) { var result = new MakeRenwuWithBiaoPostResult(); using (var db = DbContextFactory.CreateDbContext()) { Xiake xiake; TokenXCodeValidation.Validate(model, db, out xiake); var biao = db.Biaos.FirstOrDefault(a => a.Id == model.BiaoId); var biaoshi = db.Biaoshis.FirstOrDefault(a => a.Id == model.BiaoshiID); var renwu = new Renwu() { CreateTime = DateTime.Now, RunTime = biao.PlanTime, Biaoju = xiake, Biao = biao, Biaoshi = biaoshi }; db.Renwus.Add(renwu); db.SaveChanges(); result.RunningTime = renwu.RunTime; result.BangpaiType = biaoshi.Bangpai; result.SearchWord = biao.SearchWord; result.Price = biao.Price; result.BiaoshiName = biaoshi.Title; result.ID = renwu.Id; } return new JsonResult() { Data = result }; }
public void DoAllow (long[] ids) { using(var db = DbContextFactory.CreateDbContext()) { var xiake = db.Xiakes.FirstOrDefault(a => a.XiakeName == System.Threading.Thread.CurrentPrincipal.Identity.Name); if (xiake.UserType != XiakeType.Zhanggui) throw new FaultException("非掌柜不可以核准"); var vals = db.Validations .Include(a=>a.Biaoshi) .Include(a=>a.Zhanggui) .Include(a=>a.Biao ) .Include(a=>a.Biaoshi.Biaoju) .Where(a => ids.Contains(a.Id)) .ToArray(); var renwus = new List<RenwuData>(); foreach(var item in vals) { if(item.Zhanggui != xiake) throw new FaultException("别人的镖不可以核准"); var s = RunningStepsData.MakeDataWithString(item.Biao.Steps); var renwu = new Renwu() { RunTime = item.Biao.CreateTime , Biaoju = item.Biaoshi.Biaoju, Biao = item.Biao, Biaoshi = item.Biaoshi, Bangpai = item.Biaoshi.Bangpai, NextStep = s.JubenDayDatas[0].Juben, Steps = item.Biao.Steps, IsDisabled = false, DaysForCurStep = s.JubenDayDatas[0].Days }; db.Renwus.Add(renwu); var rendata = new RenwuData() { RunningTime = renwu.RunTime, BangpaiType = item.Biaoshi.Bangpai, SearchWord = item.Biao.SearchWord, Price = item.Biao.Price, BiaoshiName = item.Biaoshi.Title , ID = renwu.Id, BiaojuId = item.Biaoshi.Biaoju.Id, NextStep = renwu.NextStep }; renwus.Add(rendata); db.Validations.Remove(item); } db.SaveChanges(); mMasterServiceProxy.PushRenwu(renwus.ToArray()); } }
public RenwuData MakeRenwuWithBiao(long biaoId, long biaoshiID) { 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 biao = db.Biaos.Include(a=>a.Zhanggui).Include(a=>a.Dianpu).FirstOrDefault(a => a.Id == biaoId); if(biao.Finished + biao.Running >= biao.PlanCount) throw new FaultException("Sorry, 此镖已被抢光了!"); var steps = RunningStepsData.MakeDataWithString(biao.Steps); var biaoshi = db.Biaoshis.FirstOrDefault(a => a.Id == biaoshiID && a.Biaoju.Id == xiake.Id); if(biaoshi == null) throw new FaultException("您的帐号下未找到相应镖师"); var renwu = new Renwu() { RunTime = DateTime.Now, Biaoju = xiake, Biao = biao, Biaoshi = biaoshi, Steps = biao.Steps, NextStep = steps.JubenDayDatas[0].Juben, Bangpai = biao.Bangpai , IsDisabled = false, DaysForCurStep = steps.JubenDayDatas[0].Days }; biao.Running += 1; var set = ConfigSettings.GetConfigSettings(db.Settingses.FirstOrDefault().ConfigData); xiake.Credits.FreeCredits -= set.CreditsPolicySet.SpendForTakeBiao; if(xiake.Credits.FreeCredits <0) throw new FaultException("您的余额不足,不可以获取此镖"); if(biao.YqCheckRegDate == true && biaoshi.RegisterTime == null) { throw new FaultException("此镖要求验证镖师的注册时间,而您选择的镖师还未验证注册时间; 请等待系统验证!"); } if(biao.YqCheckRegDate == true && ( biaoshi.RegisterTime> biao.YqRegisterDate)) { throw new FaultException("镖师的注册时间不符合此镖的要求,您可选择其他镖师再试"); } if(set.LawSet.HoursForRejectSameBiaoshi != 0) { var tm = DateTime.Now.AddHours(-set.LawSet.HoursForRejectSameBiaoshi); var isrenwu = db.Renwus.Any(a => a.Biaoshi.Id == biaoshiID && a.CreateTime > tm); if(isrenwu) throw new FaultException(string.Format( "禁止同一镖师在{0}小时里再次取镖,您可切换镖师再试!", set.LawSet.HoursForRejectSameBiaoshi)); var isval = db.Validations.Any(a => a.Biaoshi.Id == biaoshiID && a.CreateTime > tm); if (isval) throw new FaultException(string.Format("禁止同一镖师在{0}小时里再次取镖,您可切换镖师再试!", set.LawSet.HoursForRejectSameBiaoshi)); } if (db.Renwus.Any(a=>a.Biao.Id == biaoId && a.Biaoshi.Id == biaoshiID)) { throw new FaultException(string.Format("此镖师已经取过此镖了。")); } if(biao.RejectOneBiaoju ) { var ccc = db.Renwus.Any(a => a.Biaoju.Id == xiake.Id && a.Biao.Zhanggui.Id == biao.Zhanggui.Id ); if(ccc == true) { throw new FaultException(string.Format("此镖被设置为禁止老客户参加,您已经做过")); } } if(biao.AllowXiakeType == AllowXiakeType.JustNew) { if(db.Renwus.Any(a => a.Biaoshi.Id == biaoshiID && a.Biao.Zhanggui.Id == biao.Zhanggui.Id)) { throw new FaultException(string.Format("此镖被设置为禁止老客户参加,您已经做过")); } } if(biao.AllowXiakeType == AllowXiakeType.JustOld) { if(biao.MaxFinishDaysForOldCustomer > 0) { var tm = DateTime.Now.AddDays(- biao.MaxFinishDaysForOldCustomer); if (!db.Renwus.Any(a => a.Biaoshi.Id == biaoshiID && a.Biao.Dianpu.Id == biao.Dianpu.Id && a.NextStep == null && a.Biao.Id != biaoId && a.FinishTime <= tm )) { throw new FaultException(string.Format("Sorry, 此镖被设置为仅老客户参加。")); } } else { if (!db.Renwus.Any(a => a.Biaoshi.Id == biaoshiID && a.Biao.Dianpu.Id == biao.Dianpu.Id )) { throw new FaultException(string.Format("Sorry, 此镖被设置为仅老客户参加。")); } } } db.Renwus.Add(renwu); try { db.SaveChanges(); } catch(DbUpdateConcurrencyException) { return MakeRenwuWithBiao(biaoId, biaoshiID); } catch(Exception e) { } if(biao.Running + biao.Finished == biao.PlanCount) { mMasterServiceProxy.PushBiaoCancelMessage(biao.Id); } if(set.CreditsPolicySet.SpendForTakeBiao > 0) { mMasterServiceProxy.PushCreditsChangeMessage( xiake.Id, xiake.Credits.FreeCredits, xiake.Credits.FreezeCredits); } mMasterServiceProxy.PushBiaoCountChangedMessage(biao.Zhanggui.Id,biao.Id, biao.Running, biao.Finished); return new RenwuData() { RunningTime = renwu.RunTime, BangpaiType = biaoshi.Bangpai, SearchWord = biao.SearchWord, Price = biao.Price, BiaoshiName = biaoshi.Title, ID = renwu.Id, BiaojuId = xiake.Id, NextStep = renwu.NextStep, NewFreezeCredits = xiake.Credits.FreezeCredits, Steps = renwu.Steps, Salary = biao.Salary, }; } }
public void RenwuTest10 () { //注册和登录掌柜 var zg = LoginService.XiakeJoin(XiakeNames.ZG_NAME, "ok1234", "111111", "*****@*****.**", "22222222", XiakeType.Zhanggui,""); Login(XiakeNames.ZG_NAME); //添加店铺 var dpid = DianpuService.AddDianpu(BangpaiType.Taobao, "http://1234.taobao.com", "匹克"); //发布镖-拒绝不同镖师接同一店铺任务 var steps = "刷单@2=1;1=2;3=3"; var b1id = BiaoService.PublishBiao(dpid, "abc", 32, 3, "hello", 5, "sku", "hahaha", true, true,false, DateTime.Now, true, 38, 35, 333, steps, AllowXiakeType.Both, 0, false); var b2id = BiaoService.PublishBiao(dpid, "acccbc", 32, 3, "heddllo", 5, "sku", "hahafasdha", true, true,false, DateTime.Now, true, 38, 35, 333, steps, AllowXiakeType.JustOld, 10, false); //注册和登录镖局 var bj = LoginService.XiakeJoin(XiakeNames.BJ_NAME, "ok1234", "9999", "*****@*****.**", "342342", XiakeType.Biaoju,""); Login(XiakeNames.BJ_NAME); //创建镖师1 var biaoshiId = BiaoshiService.AddBiaoshiByBiaoju(BangpaiType.Taobao, "hai"); RenwuService.MakeRenwuWithBiao(b1id, biaoshiId); try { var rw2 = RenwuService.MakeRenwuWithBiao(b2id, biaoshiId); Assert.Fail("老客户完成10天的可做"); } catch (AssertFailedException) { throw; } catch (FaultException) { } using(var db = DbContextFactory.CreateDbContext()) { var biao = db.Biaos.FirstOrDefault(a => a.Id == b1id); var biaoju = db.Xiakes.FirstOrDefault(a => a.Id == bj.ID); var bs = db.Biaoshis.FirstOrDefault(a => a.Id == biaoshiId); var dt = DateTime.Now.AddDays(-10); var renwu = new Renwu() { Biao = biao, Bangpai = biao.Bangpai, Biaoju = biaoju, Biaoshi = bs, FinishTime = dt, RunTime = DateTime.Now, NextStep = null , Steps = steps }; db.Renwus.Add(renwu); db.SaveChanges(); } try { var rw3 = RenwuService.MakeRenwuWithBiao(b2id, biaoshiId); } catch (FaultException) { Assert.Fail("老客户完成10天的可做"); } }
static void Main(string[] args) { Console.WriteLine("准备创建模拟数据,请先删除原始数据库,回车后继续..."); Console.ReadLine(); var db = DbContextFactory.CreateDbContext(); #region 创建管理员帐号 Console.WriteLine("请输入管理员帐号名称"); var adminName = Console.ReadLine().Trim(); var u_admin = new Xiake() { Credits = new XiakeCredits(), IsAuthorized = true, IsFrozen = false, XiakeName = adminName, Password = "******", UserType = XiakeType.Mengzhu, Status = XiakeStatus.Enabled, QQ = "12345", Mail = "*****@*****.**", Tel = "18686225002", LastLoginTime = DateTime.Now }; db.Xiakes.Add(u_admin); var inte = new InviteStorage() {Credits = 0, Xiake = u_admin}; db.InviteStorages.Add(inte); Console.WriteLine("管理员帐号:admin password: ok1234 "); #endregion #region 创建服务器列表 { Console.WriteLine("请输入服务器URL (net.tcp://xxx:1981/)"); var url = Console.ReadLine(); if(string.IsNullOrEmpty(url)) url = "net.tcp://*****:*****@qq.com", Tel = "18686225003", LastLoginTime = DateTime.Now }; db.Xiakes.Add(u_shop); var inte2 = new InviteStorage() {Credits = 0, Xiake = u_shop}; db.InviteStorages.Add(inte2); Console.WriteLine("店铺帐号: shop1 , ok1234"); #endregion #region 创建店铺 { //创建三个店铺 db.Dianpus.Add(new Dianpu() { Bangpai= BangpaiType.Taobao, Name="江山水货店", Url="http://js.taobao.com", Zhanggui= u_shop }); db.Dianpus.Add(new Dianpu() { Bangpai = BangpaiType.Taobao, Name = "丽水山货店", Url = "http://ls.taobao.com", Zhanggui = u_shop }); db.Dianpus.Add(new Dianpu() { Bangpai = BangpaiType.Taobao, Name = "温州水货店", Url = "http://wz.taobao.com", Zhanggui = u_shop }); } #endregion #region 创建一个刷手帐号 var u_customer = new Xiake() { Credits = new XiakeCredits(), IsAuthorized = true, IsFrozen = false, XiakeName = "customer", Password = "******", UserType = XiakeType.Biaoju, Status = XiakeStatus.Enabled, QQ = "123456", Mail = "*****@*****.**", Tel = "18686225003", LastLoginTime = DateTime.Now }; db.Xiakes.Add(u_customer); var inte3 = new InviteStorage() { Credits = 0, Xiake = u_customer }; db.InviteStorages.Add(inte3); Console.WriteLine("刷手: custmoer , ok1234"); #endregion #region 创建镖 var appBiao = new Biao(); { var rundata = string.Format("{0}@{1:D}=1;{2:D}=2;{3:D}=3", "刷单", JubenType.TaobaoCollect , JubenType.TaobaoBuy, JubenType.TaobaoPay); for(var i = 0; i < 120; i++) { var biao = new Biao() { Dianpu = u_shop.Dianpus.First(), GoodsId = "ASDFASDF321234ASDf", PlanCount = 10, Price = 10, RealCount = 0, Zhanggui = u_shop, Salary = 3, SearchWord= "男 内衣 " + i.ToString(), Sku = "XL;红色", YqBindPhone = true , YqBindSfz = false, YqManualCheck = false, YqMonthCount = 10, YqRegisterDate= DateTime.Now, YqUserLevel = 200, YqWeekCount = 5, Steps = rundata, IsEnable = true, Bangpai = BangpaiType.Taobao, AllowXiakeType = AllowXiakeType.Both }; db.Biaos.Add(biao); appBiao = biao; } } #endregion #region 创建镖师 Biaoshi BS = null; { for(var i = 0; i < 5; i++) { var biaoshi = new Biaoshi() { Biaoju = u_customer, Bangpai = BangpaiType.Taobao, Title = "Hai" + i.ToString() }; db.Biaoshis.Add(biaoshi); BS = biaoshi; } } #endregion #region 创建帮助 { var trf = @"{\rtf1\ansi\ansicpg1252\uc1\htmautsp\deff2{\fonttbl{\f0\fcharset0 Times New Roman;}{\f2\fcharset134 \'ce\'a2\'c8\'ed\'d1\'c5\'ba\'da;}}{\colortbl\red0\green0\blue0;\red255\green255\blue255;}\loch\hich\dbch\pard\plain\ltrpar\itap0{\lang1033\fs18\f2\cf0 \cf0\ql{\f2 {\ltrch sdfasdfsd}\li0\ri0\sa0\sb0\fi0\ql\par} } }"; var help1 = new Help() { Group = "帐户", SortNum = 0, Title = "怎么注册帐号?", UpdatedTime= DateTime.Now, RtfData = trf }; db.Helps.Add(help1); var help2 = new Help() { Group = "帐户", SortNum = 0, Title = "我为什么不能注册帐号?", UpdatedTime = DateTime.Now, RtfData = trf }; db.Helps.Add(help2); var help3 = new Help() { Group = "刷单", SortNum = 0, Title = "我要怎么样才可以刷单?", UpdatedTime = DateTime.Now, RtfData = trf }; db.Helps.Add(help3); var help4 = new Help() { Group = "刷单", SortNum = 0, Title = "刷单要钱吗?", UpdatedTime = DateTime.Now, RtfData = trf }; db.Helps.Add(help4); } #endregion #region 创建公告 { var trf = @"{\rtf1\ansi\ansicpg1252\uc1\htmautsp\deff2{\fonttbl{\f0\fcharset0 Times New Roman;}{\f2\fcharset134 \'ce\'a2\'c8\'ed\'d1\'c5\'ba\'da;}}{\colortbl\red0\green0\blue0;\red255\green255\blue255;}\loch\hich\dbch\pard\plain\ltrpar\itap0{\lang1033\fs18\f2\cf0 \cf0\ql{\f2 {\ltrch welcome!}\li0\ri0\sa0\sb0\fi0\ql\par} } }"; var gg = new Gonggao() { RtfData = trf}; db.Gonggaos.Add(gg); } #endregion #region 创建任务 { var biaos = u_shop.Biaos.ToArray(); for(var i = 0; i < 100; i++) { var biao = biaos[RandomObj.Next(0, biaos.Length)]; var rw = new Renwu() { Biao = biao , Biaoju = u_customer, Biaoshi = u_customer.Biaoshis.First(), RunTime = DateTime.Now.AddMinutes(2) , NextStep= JubenType.TaobaoCollect, Steps = "刷单@2=0;1=1;3=0;", Bangpai = biao.Bangpai }; db.Renwus.Add(rw); } } #endregion #region 创建定单 { for(var i = 0; i < 200; i++) { var biaoshi = u_customer.Biaoshis.First(); var dan = new Dingdan() { BiaojuMarkInfo = "ok", BiaojuMarkType = MarkType.Blue, Biaoshi = biaoshi, DateTime = DateTime.Now, Dianpu = u_shop.Dianpus.First(), Goods = "男士内衣" + i.ToString(), Price = 32, Salary = 5, Bangpai = biaoshi.Bangpai }; db.Dingdans.Add(dan); } } #endregion #region 创建验证 { for (var i = 0; i < 5; i++) { var biao = appBiao; var biaoshi = BS; var val = new Validation() { Biao = biao, Biaoshi = biaoshi, Details = "xxxxx xxx", Zhanggui = biao.Zhanggui, }; db.Validations.Add(val); } } #endregion #region 创建付款 for(var i = 0; i < 100; i++) { var pay = new Pay() { Organization = "中国银行", AccountTitle = "12341 2342 32323", Account = "黄药帅" + i , Price = 32 + i, Credits = 20 + i, Xiake = u_shop }; db.Pays.Add(pay); } #endregion #region 创建错误日志 for(var i = 0; i < 10; i++) { var log = new JubenErrorLog() { JubenType = JubenType.TaobaoBuy, JubenErrorType = JubenErrorType.Exception, Logs = "asdfsd, asdfa, asdfas", Xiake = u_customer, JubenName = "okokas" + i.ToString() }; db.JubenErrorLogs.Add(log); } for (var i = 0; i < 80; i++) { var log = new JubenErrorLog() { JubenType = JubenType.TaobaoGetGoods, JubenErrorType = JubenErrorType.UnCorrect, Logs = "asdfsd, asdfa, asdfas", Xiake = u_shop, JubenName = "ohaisdf as" + i.ToString() }; db.JubenErrorLogs.Add(log); } #endregion } db.SaveChanges(); Console.WriteLine("任务完成"); Console.ReadLine(); }