Example #1
0
        public bool Start(HostControl hostControl)
        {
            Type   mainJobType  = typeof(ManagerJob);
            string mainJobId    = GuidUtil.Empty();
            string mainJobGroup = string.Format("{0}Group", mainJobId);

            JobKey     jobKey = new JobKey(mainJobId, mainJobGroup);
            IJobDetail job    = new JobDetailImpl(mainJobId, mainJobGroup, mainJobType);

            job.JobDataMap.Add("Parameters", "");
            job.JobDataMap.Add("JobName", "监控子任务状态变化任务");

            CronTriggerImpl trigger = new CronTriggerImpl();

            trigger.CronExpressionString = "0/3 * * * * ?";//每3秒执行一次
            trigger.Name         = mainJobId;
            trigger.Description  = "监控子任务状态变化任务";
            trigger.StartTimeUtc = DateTime.UtcNow;
            trigger.Group        = mainJobId + "TriggerGroup";

            if (!scheduler.CheckExists(jobKey))
            {
                scheduler.ScheduleJob(job, trigger);
            }
            scheduler.ListenerManager.AddJobListener(new SchedulerJobListener(), GroupMatcher <JobKey> .AnyGroup());
            scheduler.Start();
            //QuartzManager.JobScheduler(scheduler);
            _logger.Info(string.Format("{0} Start", ServiceName));
            return(true);
        }
        public CustomJsonResult Add(string operater, RopAdminOrgAdd rop)
        {
            var result = new CustomJsonResult();

            using (TransactionScope ts = new TransactionScope())
            {
                var isExists = CurrentDb.SysOrg.Where(m => m.Name == rop.Name).FirstOrDefault();
                if (isExists != null)
                {
                    return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "该名称已经存在"));
                }

                var sysOrg = new SysOrg();
                sysOrg.Id          = GuidUtil.New();
                sysOrg.Name        = rop.Name;
                sysOrg.Description = rop.Description;
                sysOrg.PId         = rop.PId;
                sysOrg.BelongSite  = Enumeration.BelongSite.Admin;
                sysOrg.ReferenceId = GuidUtil.Empty();
                sysOrg.Depth       = 0;
                sysOrg.CreateTime  = DateTime.Now;
                sysOrg.Creator     = operater;
                CurrentDb.SysOrg.Add(sysOrg);

                CurrentDb.SaveChanges();
                ts.Complete();

                result = new CustomJsonResult(ResultType.Success, ResultCode.Success, "保存成功");
            }

            return(result);
        }
Example #3
0
        public CustomJsonResult Cancle(RopOrderCancle rop)
        {
            CustomJsonResult result = new CustomJsonResult();


            result = LocalS.BLL.Biz.BizFactory.Order.Cancle(GuidUtil.Empty(), rop.OrderId, rop.Reason);

            return(result);
        }
Example #4
0
        public CustomJsonResult Add(string operater, string merchId, RopStoreAdd rop)
        {
            CustomJsonResult result = new CustomJsonResult();

            using (TransactionScope ts = new TransactionScope())
            {
                var isExistStore = CurrentDb.Store.Where(m => m.MerchId == merchId && m.Name == rop.Name).FirstOrDefault();
                if (isExistStore != null)
                {
                    return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "名称已存在,请使用其它"));
                }

                var store = new Store();
                store.Id             = GuidUtil.New();
                store.MerchId        = merchId;
                store.Name           = rop.Name;
                store.Address        = rop.Address;
                store.BriefDes       = rop.BriefDes;
                store.IsOpen         = false;
                store.DispalyImgUrls = rop.DispalyImgUrls.ToJsonString();
                store.MainImgUrl     = ImgSet.GetMain(store.DispalyImgUrls);
                store.CreateTime     = DateTime.Now;
                store.Creator        = operater;
                CurrentDb.Store.Add(store);


                //默认 快递商品库存
                var storeSellChannel = new StoreSellChannel();
                storeSellChannel.Id         = GuidUtil.New();
                storeSellChannel.Name       = "快递商品";
                storeSellChannel.MerchId    = merchId;
                storeSellChannel.StoreId    = store.Id;
                storeSellChannel.RefType    = E_StoreSellChannelRefType.Express;
                storeSellChannel.RefId      = GuidUtil.Empty();
                storeSellChannel.CreateTime = DateTime.Now;
                store.Creator = operater;


                CurrentDb.SaveChanges();
                ts.Complete();
                result = new CustomJsonResult(ResultType.Success, ResultCode.Success, "保存成功");
            }

            return(result);
        }
Example #5
0
        public CustomJsonResult Add(string operater, Enumeration.BelongSite belongSite, RopSysRoleAdd rop)
        {
            var result = new CustomJsonResult();

            using (TransactionScope ts = new TransactionScope())
            {
                var isExists = CurrentDb.SysRole.Where(m => m.Name == rop.Name && m.BelongSite == belongSite).FirstOrDefault();
                if (isExists != null)
                {
                    return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "该名称已经存在"));
                }

                var sysRole = new SysRole();
                sysRole.Id          = GuidUtil.New();
                sysRole.Name        = rop.Name;
                sysRole.Description = rop.Description;
                sysRole.PId         = GuidUtil.Empty();
                sysRole.BelongSite  = belongSite;
                sysRole.Dept        = 0;
                sysRole.CreateTime  = DateTime.Now;
                sysRole.Creator     = operater;
                CurrentDb.SysRole.Add(sysRole);

                if (rop.MenuIds != null)
                {
                    foreach (var menuId in rop.MenuIds)
                    {
                        CurrentDb.SysRoleMenu.Add(new SysRoleMenu {
                            Id = GuidUtil.New(), RoleId = sysRole.Id, MenuId = menuId, Creator = operater, CreateTime = DateTime.Now
                        });
                    }
                }

                CurrentDb.SaveChanges();
                ts.Complete();

                result = new CustomJsonResult(ResultType.Success, ResultCode.Success, "保存成功");
            }

            return(result);
        }
Example #6
0
        public ContentResult PayResult()
        {
            Stream stream = Request.InputStream;

            stream.Seek(0, SeekOrigin.Begin);
            string xml = new StreamReader(stream).ReadToEnd();

            if (string.IsNullOrEmpty(xml))
            {
                return(Content(""));
            }

            LogUtil.Info("接收支付结果:" + xml);

            if (!SdkFactory.Wx.Instance().CheckPayNotifySign(xml))
            {
                LogUtil.Warn("支付通知结果签名验证失败");
                return(Content(""));
            }

            string orderSn = "";
            var    dic2    = Lumos.WeiXinSdk.CommonUtil.ToDictionary(xml);

            if (dic2.ContainsKey("out_trade_no") && dic2.ContainsKey("result_code"))
            {
                orderSn = dic2["out_trade_no"].ToString();
            }

            bool isPaySuccessed = false;
            var  result         = BizFactory.Order.PayResultNotify(GuidUtil.Empty(), Enumeration.OrderNotifyLogNotifyFrom.NotifyUrl, xml, orderSn, out isPaySuccessed);

            if (result.Result == ResultType.Success)
            {
                Response.Write("<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>");
                Response.End();
            }

            return(Content(""));
        }
Example #7
0
        public CustomJsonResult Add(string pOperater, RopSysRoleAdd rop)
        {
            var isExistName = CurrentDb.SysRole.Where(m => m.Name == rop.Name).FirstOrDefault();

            if (isExistName != null)
            {
                return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, string.Format("添加失败,名称({0})已被使用", rop.Name)));
            }
            var sysRole = new SysRole();

            sysRole.Id          = GuidUtil.New();
            sysRole.Name        = rop.Name;
            sysRole.Description = rop.Description;
            sysRole.PId         = GuidUtil.Empty();
            sysRole.CreateTime  = DateTime.Now;
            sysRole.Creator     = pOperater;
            sysRole.IsCanDelete = true;
            CurrentDb.SysRole.Add(sysRole);
            CurrentDb.SaveChanges();


            return(new CustomJsonResult(ResultType.Success, ResultCode.Success, "添加成功"));
        }
        public CustomJsonResult UpdateBlackList()
        {
            FileStream fsRead = null;

            try
            {
                string promoteId = "c0c71a0657924059b39895f9e406ef26";

                fsRead = new FileStream(Server.MapPath("~/Files/a1.xls"), FileMode.Open);

                HSSFWorkbook workbook = new HSSFWorkbook(fsRead);

                if (workbook == null)
                {
                    return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "Excel读取失败"));
                }

                ISheet sheet = workbook.GetSheetAt(0);

                if (sheet == null)
                {
                    return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "Excel工作本为空"));
                }

                if (sheet.LastRowNum <= 1)
                {
                    return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "Excel工作本数据为空"));
                }

                int rowCount = sheet.LastRowNum + 1;


                for (int i = 1; i < rowCount; i++)
                {
                    IRow row = sheet.GetRow(i);
                    if (row != null)
                    {
                        var cell_phoneNumer = row.GetCell(2);
                        if (cell_phoneNumer != null)
                        {
                            string str_phoneNumer = cell_phoneNumer.ToString().Trim();
                            var    promoteUser    = CurrentDb.PromoteUser.Where(m => m.CtPhone == str_phoneNumer).FirstOrDefault();
                            if (promoteUser != null)
                            {
                                var promoteBlackList = CurrentDb.PromoteBlackList.Where(m => m.ClientId == promoteUser.ClientId && m.PromoteId == promoteId).FirstOrDefault();
                                if (promoteBlackList == null)
                                {
                                    promoteBlackList            = new Lumos.Entity.PromoteBlackList();
                                    promoteBlackList.Id         = GuidUtil.New();
                                    promoteBlackList.PromoteId  = promoteId;
                                    promoteBlackList.ClientId   = promoteUser.ClientId;
                                    promoteBlackList.CreateTime = DateTime.Now;
                                    promoteBlackList.Creator    = GuidUtil.Empty();
                                    CurrentDb.PromoteBlackList.Add(promoteBlackList);
                                    CurrentDb.SaveChanges();
                                }
                            }
                        }
                    }
                }

                if (fsRead != null)
                {
                    fsRead.Close();
                    fsRead.Dispose();
                }

                return(new CustomJsonResult(ResultType.Success, ResultCode.Success, "上传成功"));
            }
            catch (Exception ex)
            {
                if (fsRead != null)
                {
                    fsRead.Close();
                    fsRead.Dispose();
                }
                LogUtil.Error("读取excel失败", ex);
                return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "Excel上传失败"));
            }
        }
Example #9
0
        public List <TreeNode> GetSubjectTree(string merchId)
        {
            var prdSubjects = CurrentDb.PrdSubject.Where(m => m.MerchId == merchId).OrderBy(m => m.Priority).ToList();

            return(GetSubjectTree(GuidUtil.Empty(), prdSubjects));
        }
Example #10
0
        public CustomJsonResult Add(string operater, RopMerchMasterAdd rop)
        {
            var result = new CustomJsonResult();

            if (string.IsNullOrEmpty(rop.UserName))
            {
                return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "用户名不能为空"));
            }

            if (string.IsNullOrEmpty(rop.Password))
            {
                return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "密码不能为空"));
            }

            var isExistUserName = CurrentDb.SysUser.Where(m => m.UserName == rop.UserName).FirstOrDefault();

            if (isExistUserName != null)
            {
                return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, string.Format("该用户名({0})已被使用", rop.UserName)));
            }

            using (TransactionScope ts = new TransactionScope())
            {
                string merchId = GuidUtil.New();

                var user = new SysMerchUser();
                user.Id            = GuidUtil.New();
                user.MerchId       = merchId;
                user.PId           = GuidUtil.Empty();
                user.UserName      = rop.UserName;
                user.FullName      = rop.FullName;
                user.PasswordHash  = PassWordHelper.HashPassword(rop.Password);
                user.Email         = rop.Email;
                user.PhoneNumber   = rop.PhoneNumber;
                user.BelongSite    = Enumeration.BelongSite.Merch;
                user.IsDelete      = false;
                user.IsDisable     = false;
                user.IsMaster      = true;
                user.Creator       = operater;
                user.CreateTime    = DateTime.Now;
                user.RegisterTime  = DateTime.Now;
                user.SecurityStamp = Guid.NewGuid().ToString().Replace("-", "");
                CurrentDb.SysMerchUser.Add(user);

                var merch = new LocalS.Entity.Merch();
                merch.Id         = merchId;
                merch.UserId     = user.Id;
                merch.Name       = rop.FullName;
                merch.CreateTime = DateTime.Now;
                merch.Creator    = operater;
                CurrentDb.Merch.Add(merch);

                var sysRole = CurrentDb.SysRole.Where(m => m.BelongSite == Enumeration.BelongSite.Merch && m.IsSuper == true).FirstOrDefault();
                if (sysRole == null)
                {
                    return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "未配置系统管理角色"));
                }


                CurrentDb.SysUserRole.Add(new SysUserRole {
                    Id = GuidUtil.New(), RoleId = sysRole.Id, UserId = user.Id, Creator = operater, CreateTime = DateTime.Now
                });


                var sysOrg = new SysOrg();
                sysOrg.Id          = GuidUtil.New();
                sysOrg.Name        = "根组织";
                sysOrg.PId         = GuidUtil.Empty();
                sysOrg.BelongSite  = Enumeration.BelongSite.Merch;
                sysOrg.ReferenceId = merch.Id;
                sysOrg.IsDelete    = false;
                sysOrg.Priority    = 0;
                sysOrg.Depth       = 0;
                sysOrg.CreateTime  = DateTime.Now;
                sysOrg.Creator     = operater;
                CurrentDb.SysOrg.Add(sysOrg);

                var sysUserOrg = new SysUserOrg();
                sysUserOrg.Id         = GuidUtil.New();
                sysUserOrg.OrgId      = sysOrg.Id;
                sysUserOrg.UserId     = user.Id;
                sysUserOrg.CreateTime = DateTime.Now;
                sysUserOrg.Creator    = operater;
                CurrentDb.SysUserOrg.Add(sysUserOrg);

                CurrentDb.SaveChanges();
                ts.Complete();

                result = new CustomJsonResult(ResultType.Success, ResultCode.Success, "新建成功");
            }

            return(result);
        }
Example #11
0
        public List <TreeNode> GetOrgTree()
        {
            var sysOrgs = CurrentDb.SysOrg.Where(m => m.BelongSite == Enumeration.BelongSite.Admin).OrderBy(m => m.Priority).ToList();

            return(GetOrgTree(GuidUtil.Empty(), sysOrgs));
        }
        public void Execute(IJobExecutionContext context)
        {
            try
            {
                var lists = GetList();

                LogUtil.Info(string.Format("共有{0}条记录需要检查状态", lists.Count));

                if (lists.Count > 0)
                {
                    LogUtil.Info(string.Format("开始执行订单查询,时间:{0}", this.DateTime));

                    foreach (var m in lists)
                    {
                        switch (m.Type)
                        {
                        case TimerTaskType.CheckOrderPay:

                            var order = m.Data.ToJsonObject <Order>();
                            #region 检查支付状态
                            if (order.PayExpireTime.Value.AddMinutes(1) >= DateTime.Now)
                            {
                                string xml = SdkFactory.Wx.Instance().OrderQuery(order.Sn);
                                LogUtil.Info(string.Format("订单号:{0},结果文件:{1}", order.Sn, xml));
                                bool isPaySuccessed = false;
                                BizFactory.Order.PayResultNotify(GuidUtil.Empty(), Entity.Enumeration.OrderNotifyLogNotifyFrom.OrderQuery, xml, order.Sn, out isPaySuccessed);
                                if (isPaySuccessed)
                                {
                                    Exit(m.Id);
                                    LogUtil.Info(string.Format("订单号:{0},支付成功,删除缓存", order.Sn));
                                }
                            }
                            else
                            {
                                Exit(m.Id);
                                var rt = BizFactory.Order.Cancle(GuidUtil.Empty(), m.Id, "订单支付有效时间过期");
                                if (rt.Result == ResultType.Success)
                                {
                                    Exit(m.Id);
                                    LogUtil.Info(string.Format("订单号:{0},已经过期,删除缓存", order.Sn));
                                }
                            }
                            #endregion

                            break;
                        }
                    }

                    LogUtil.Info(string.Format("结束执行订单查询,时间:{0}", this.DateTime));
                }


                #region 检查优惠券领取状态

                //var promoteUserCoupons = CurrentDb.PromoteUserCoupon.Where(m => m.IsGet == false).ToList();

                //foreach (var item in promoteUserCoupons)
                //{
                //    var wxUserInfo = CurrentDb.WxUserInfo.Where(m => m.UserId == item.UserId).FirstOrDefault();
                //    if (wxUserInfo != null)
                //    {
                //        var cards = SdkFactory.Wx.Instance().GetUserCards(wxUserInfo.OpenId, item.WxCouponId);

                //        if (cards != null)
                //        {
                //            var card = cards.FirstOrDefault();

                //            if (card != null)
                //            {
                //                item.WxCouponDecryptCode = card.code;
                //                item.Mender = GuidUtil.Empty();
                //                item.MendTime = this.DateTime;
                //            }

                //        }
                //    }
                //}

                //CurrentDb.SaveChanges();

                #endregion

                #region 检查提现到期时间后,用户余额归0


                //if (DateTime.Now > DateTime.Parse("2018-11-15"))
                //{

                //    var withdraws = CurrentDb.Withdraw.Where(m => m.Status == Enumeration.WithdrawStatus.Handing).ToList();

                //    foreach (var withdraw in withdraws)
                //    {
                //        var pms = new WithdrawDoTransferPms();
                //        pms.WithdrawId = withdraw.Id;
                //        pms.Operate = WithdrawDoTransferOperate.Pass;
                //        pms.AuditComments = "";
                //        BizFactory.Withdraw.DoTransfer(GuidUtil.New(), pms);
                //    }


                //    var funds = CurrentDb.Fund.Where(m => m.AvailableBalance > 0).ToList();

                //    foreach (var fund in funds)
                //    {

                //        var dAmount = fund.AvailableBalance;
                //        fund.CurrentBalance -= dAmount;
                //        fund.AvailableBalance -= dAmount;
                //        fund.MendTime = DateTime.Now;
                //        fund.Mender = GuidUtil.Empty();


                //        var fundTrans = new FundTrans();
                //        fundTrans.Id = GuidUtil.New();
                //        fundTrans.Sn = SnUtil.Build(Enumeration.BizSnType.FundTrans, fund.ClientId);
                //        fundTrans.ClientId = fund.ClientId;
                //        fundTrans.ChangeType = Enumeration.FundTransChangeType.WtihdrawExpire;
                //        fundTrans.ChangeAmount = dAmount;
                //        fundTrans.CurrentBalance = fund.CurrentBalance;
                //        fundTrans.AvailableBalance = fund.AvailableBalance;
                //        fundTrans.LockBalance = fund.LockBalance;
                //        fundTrans.CreateTime = DateTime.Now;
                //        fundTrans.Creator = GuidUtil.Empty();
                //        fundTrans.Description = "提现期限到期,余额清零";
                //        fundTrans.TipsIcon = IconUtil.Withdraw;
                //        fundTrans.IsNoDisplay = false;
                //        CurrentDb.FundTrans.Add(fundTrans);
                //        CurrentDb.SaveChanges();
                //    }

                //}

                #endregion
            }
            catch (Exception ex)
            {
                LogUtil.Error("全局定时任务发生异常", ex);
            }
        }
Example #13
0
        public CustomJsonResult Cancle(string pOperater, string pOrderId, string cancelReason)
        {
            var result = new CustomJsonResult();

            using (TransactionScope ts = new TransactionScope())
            {
                var order = CurrentDb.Order.Where(m => m.Id == pOrderId).FirstOrDefault();
                if (order == null)
                {
                    return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "找不到该订单"));
                }

                if (order.Status == Enumeration.OrderStatus.Payed)
                {
                    return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "该订单已经支付成功"));
                }

                if (order.Status == Enumeration.OrderStatus.Completed)
                {
                    return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "该订单已经完成"));
                }

                if (order.Status == Enumeration.OrderStatus.WaitPay)
                {
                    order.Status       = Enumeration.OrderStatus.Cancled;
                    order.CancledTime  = this.DateTime;
                    order.CancelReason = cancelReason;
                    order.Mender       = GuidUtil.Empty();
                    order.MendTime     = this.DateTime;

                    var orderDetails = CurrentDb.OrderDetails.Where(m => m.OrderId == order.Id).ToList();

                    foreach (var item in orderDetails)
                    {
                        item.Status   = Enumeration.OrderDetailsStatus.Cancled;
                        item.Mender   = GuidUtil.Empty();
                        item.MendTime = this.DateTime;

                        if (!string.IsNullOrEmpty(item.PromoteId))
                        {
                            var promoteSku = CurrentDb.PromoteSku.Where(q => q.PromoteId == item.PromoteId && q.SkuId == item.SkuId).FirstOrDefault();
                            if (promoteSku != null)
                            {
                                if (promoteSku.StockQuantity > 0)
                                {
                                    promoteSku.LockQuantity -= item.Quantity;
                                    promoteSku.SellQuantity += item.Quantity;
                                }

                                promoteSku.Mender   = GuidUtil.Empty();
                                promoteSku.MendTime = this.DateTime;
                            }
                        }
                    }

                    CurrentDb.SaveChanges();
                    ts.Complete();

                    result = new CustomJsonResult(ResultType.Success, ResultCode.Success, "操作成功");
                }

                return(result);
            }
        }
Example #14
0
        public ActionResult NotifyEvent()
        {
            LogUtil.Info("开始接收事件推送通知");
            string echoStr = "";

            if (Request.HttpMethod == "POST")
            {
                Stream stream = Request.InputStream;
                stream.Seek(0, SeekOrigin.Begin);
                string xml = new StreamReader(stream).ReadToEnd();

                //Int32 intLen = Convert.ToInt32(Request.InputStream.Length);
                //byte[] b = new byte[intLen];
                //Request.InputStream.Read(b, 0, intLen);
                //string xml = System.Text.Encoding.UTF8.GetString(b);
                LogUtil.Info("接收事件推送内容:" + xml);
                if (!string.IsNullOrEmpty(xml))
                {
                    var    baseEventMsg = WxMsgFactory.CreateMessage(xml);
                    string eventKey     = null;
                    LogUtil.Info("baseEventMsg内容:" + baseEventMsg);
                    if (baseEventMsg != null)
                    {
                        var userInfo_Result = SdkFactory.Wx.Instance().GetUserInfoByApiToken(baseEventMsg.FromUserName);

                        if (userInfo_Result.openid != null)
                        {
                            LogUtil.Info("userInfo_Result:" + JsonConvert.SerializeObject(userInfo_Result));

                            var wxUserInfo = new WxUserInfo();

                            wxUserInfo.OpenId     = userInfo_Result.openid;
                            wxUserInfo.Nickname   = userInfo_Result.nickname;
                            wxUserInfo.Sex        = userInfo_Result.sex.ToString();
                            wxUserInfo.Province   = userInfo_Result.province;
                            wxUserInfo.City       = userInfo_Result.city;
                            wxUserInfo.Country    = userInfo_Result.country;
                            wxUserInfo.HeadImgUrl = userInfo_Result.headimgurl;
                            wxUserInfo.UnionId    = userInfo_Result.unionid;

                            wxUserInfo = BizFactory.WxUser.CheckedUser(GuidUtil.New(), wxUserInfo);

                            if (wxUserInfo != null)
                            {
                                var wxAutoReply = new WxAutoReply();
                                switch (baseEventMsg.MsgType)
                                {
                                case MsgType.TEXT:
                                    #region TEXT

                                    LogUtil.Info("文本消息");

                                    var textMsg = (TextMsg)baseEventMsg;

                                    if (textMsg != null)
                                    {
                                        LogUtil.Info("文本消息:" + textMsg.Content);

                                        if (textMsg.Content == "双11入场券" || textMsg.Content == "双十一入场券" || textMsg.Content == "双11入场卷" || textMsg.Content == "双十一入场卷")
                                        {
                                            string promoteId = "80c71a0657924059b39895f9e406ef84";
                                            string media_Id  = GetWxPromoteImgMediaId(promoteId, wxUserInfo.ClientId);
                                            echoStr = WxMsgFactory.CreateReplyImage(baseEventMsg.FromUserName, baseEventMsg.ToUserName, media_Id);
                                        }
                                    }


                                    #endregion
                                    break;

                                case MsgType.EVENT:
                                    #region EVENT
                                    switch (baseEventMsg.Event)
                                    {
                                    case EventType.SUBSCRIBE:        //订阅
                                        break;

                                    case EventType.UNSUBSCRIBE:        //取消订阅
                                        break;

                                    case EventType.SCAN:        //扫描二维码
                                    case EventType.CLICK:       //单击按钮
                                    case EventType.VIEW:        //链接按钮
                                        break;

                                    case EventType.USER_GET_CARD:        //领取卡卷
                                        #region  USER_GET_CARD
                                        var userGetCardMsg = (UserGetCardMsg)baseEventMsg;

                                        var promoteUserCoupon = CurrentDb.ClientCoupon.Where(m => m.ClientId == wxUserInfo.ClientId && m.WxCouponId == userGetCardMsg.CardId).FirstOrDefault();

                                        if (promoteUserCoupon != null)
                                        {
                                            promoteUserCoupon.IsGet               = true;
                                            promoteUserCoupon.GetTime             = DateTime.Now;
                                            promoteUserCoupon.Mender              = GuidUtil.Empty();
                                            promoteUserCoupon.MendTime            = DateTime.Now;
                                            promoteUserCoupon.WxCouponDecryptCode = userGetCardMsg.UserCardCode;
                                            CurrentDb.SaveChanges();
                                        }

                                        #endregion
                                        break;

                                    case EventType.USER_CONSUME_CARD:        //核销卡卷
                                        #region USER_CONSUME_CARD

                                        //var userConsumeCardMsg = (UserConsumeCardMsg)baseEventMsg;

                                        //if (userConsumeCardMsg != null)
                                        //{
                                        //    var reidsMqByCalProfitModel = new RedisMq4GlobalHandle();
                                        //    var reidsMqByCalProfitByCouponConsumeModel = new ReidsMqByCalProfitByCouponConsumeModel();
                                        //    reidsMqByCalProfitByCouponConsumeModel.ClientId = wxUserInfo.ClientId;
                                        //    reidsMqByCalProfitByCouponConsumeModel.WxCouponDecryptCode = userConsumeCardMsg.UserCardCode;
                                        //    reidsMqByCalProfitByCouponConsumeModel.WxCouponId = userConsumeCardMsg.CardId;

                                        //    reidsMqByCalProfitModel.Pms = reidsMqByCalProfitByCouponConsumeModel;

                                        //    ReidsMqFactory.Global.Push(RedisMqHandleType.CouponConsume,reidsMqByCalProfitModel);
                                        //}


                                        #endregion
                                        break;
                                    }
                                    #endregion
                                    break;
                                }

                                var wxMsgPushLog = new WxMsgPushLog();
                                wxMsgPushLog.Id           = GuidUtil.New();
                                wxMsgPushLog.ClientId     = wxUserInfo.ClientId;
                                wxMsgPushLog.ToUserName   = baseEventMsg.ToUserName;
                                wxMsgPushLog.FromUserName = baseEventMsg.FromUserName;
                                wxMsgPushLog.CreateTime   = DateTime.Now;
                                wxMsgPushLog.ContentXml   = xml;
                                wxMsgPushLog.MsgId        = baseEventMsg.MsgId;
                                wxMsgPushLog.MsgType      = baseEventMsg.MsgType.ToString();
                                wxMsgPushLog.Event        = baseEventMsg.Event.ToString();
                                wxMsgPushLog.EventKey     = eventKey;

                                WxMsgPushLog(wxMsgPushLog);
                            }
                        }
                    }
                }
            }
            else if (Request.HttpMethod == "GET") //微信服务器在首次验证时,需要进行一些验证,但。。。。
            {
                if (string.IsNullOrEmpty(Request["echostr"]))
                {
                    echoStr = "无法获取微信接入信息,仅供测试!";
                }
                else
                {
                    echoStr = Request["echostr"].ToString();
                }
            }
            else
            {
                echoStr = "wrong";
            }

            LogUtil.Info(string.Format("接收事件推送之后回复内容:{0}", echoStr));
            Response.Write(echoStr);
            Response.End();
            return(View());
        }
Example #15
0
        public List <TreeNode> GetOrgTree()
        {
            var sysOrgs = CurrentDb.SysOrg.OrderBy(m => m.Priority).ToList();

            return(GetOrgTree(GuidUtil.Empty(), sysOrgs));
        }
Example #16
0
        public List <TreeNode> GetOrgTree(string merchId)
        {
            var sysOrgs = CurrentDb.SysOrg.Where(m => m.ReferenceId == merchId && m.BelongSite == Enumeration.BelongSite.Merch).OrderBy(m => m.Priority).ToList();

            return(GetOrgTree(GuidUtil.Empty(), sysOrgs));
        }
Example #17
0
        public CustomJsonResult <RetOrderReserve> Reserve(string operater, RopOrderReserve rop)
        {
            CustomJsonResult <RetOrderReserve> result = new CustomJsonResult <RetOrderReserve>();

            if (rop.ReserveMode == E_ReserveMode.Unknow)
            {
                return(new CustomJsonResult <RetOrderReserve>(ResultType.Failure, ResultCode.Failure, "未知预定方式", null));
            }

            if (rop.ReserveMode == E_ReserveMode.OffLine)
            {
                if (string.IsNullOrEmpty(rop.SellChannelRefId))
                {
                    return(new CustomJsonResult <RetOrderReserve>(ResultType.Failure, ResultCode.Failure, "机器ID不能为空", null));
                }
            }

            using (TransactionScope ts = new TransactionScope())
            {
                RetOrderReserve ret = new RetOrderReserve();

                var skuIds = rop.ProductSkus.Select(m => m.Id).ToArray();

                //检查是否有可买的商品
                List <string> warn_tips = new List <string>();

                List <PrdProductSkuModel> productSkus = new List <BLL.PrdProductSkuModel>();

                foreach (var sku in rop.ProductSkus)
                {
                    var productSku = BizFactory.PrdProduct.GetProductSku(rop.StoreId, sku.Id);

                    productSkus.Add(productSku);

                    var sellQuantity = 0;

                    if (rop.ReserveMode == E_ReserveMode.OffLine)
                    {
                        sellQuantity = productSku.Stocks.Where(m => m.RefType == E_StoreSellChannelRefType.Machine && m.RefId == rop.SellChannelRefId).Sum(m => m.SellQuantity);
                    }
                    else if (rop.ReserveMode == E_ReserveMode.Online)
                    {
                        if (sku.ReceptionMode == E_ReceptionMode.Machine)
                        {
                            sellQuantity = productSku.Stocks.Where(m => m.RefType == E_StoreSellChannelRefType.Machine).Sum(m => m.SellQuantity);
                        }
                        else if (sku.ReceptionMode == E_ReceptionMode.Express)
                        {
                            sellQuantity = productSku.Stocks.Where(m => m.RefType == E_StoreSellChannelRefType.Express).Sum(m => m.SellQuantity);
                        }
                        else if (sku.ReceptionMode == E_ReceptionMode.SelfTake)
                        {
                            sellQuantity = productSku.Stocks.Where(m => m.RefType == E_StoreSellChannelRefType.SelfTake).Sum(m => m.SellQuantity);
                        }
                    }

                    if (productSku.IsOffSell)
                    {
                        warn_tips.Add(string.Format("{0}已经下架", productSku.Name));
                    }
                    else
                    {
                        if (sellQuantity < sku.Quantity)
                        {
                            warn_tips.Add(string.Format("{0}的可销售数量为{1}个", productSku.Name, sellQuantity));
                        }
                    }
                }

                if (warn_tips.Count > 0)
                {
                    return(new CustomJsonResult <RetOrderReserve>(ResultType.Failure, ResultCode.Failure, string.Join(";", warn_tips.ToArray()), null));
                }

                var store = CurrentDb.Store.Where(m => m.Id == rop.StoreId).FirstOrDefault();
                if (store == null)
                {
                    return(new CustomJsonResult <RetOrderReserve>(ResultType.Failure, ResultCode.Failure, "店铺无效", null));
                }

                var order = new Order();
                order.Id            = GuidUtil.New();
                order.Sn            = RedisSnUtil.Build(RedisSnType.Order, store.MerchId);
                order.MerchId       = store.MerchId;
                order.StoreId       = rop.StoreId;
                order.StoreName     = store.Name;
                order.ClientUserId  = rop.ClientUserId;
                order.Quantity      = rop.ProductSkus.Sum(m => m.Quantity);
                order.Status        = E_OrderStatus.WaitPay;
                order.Source        = rop.Source;
                order.SubmitTime    = DateTime.Now;
                order.PayExpireTime = DateTime.Now.AddSeconds(300);
                order.Creator       = operater;
                order.CreateTime    = DateTime.Now;

                //todo
                Random rd  = new Random();
                int    num = rd.Next(100000, 1000000);
                order.PickCode = num.ToString();

                #region 更改购物车标识

                if (!string.IsNullOrEmpty(rop.ClientUserId))
                {
                    var cartsIds = rop.ProductSkus.Select(m => m.CartId).Distinct().ToArray();
                    if (cartsIds != null)
                    {
                        var clientCarts = CurrentDb.ClientCart.Where(m => cartsIds.Contains(m.Id) && m.ClientUserId == rop.ClientUserId).ToList();
                        if (clientCarts != null)
                        {
                            foreach (var cart in clientCarts)
                            {
                                cart.Status   = E_ClientCartStatus.Settling;
                                cart.Mender   = operater;
                                cart.MendTime = DateTime.Now;
                                CurrentDb.SaveChanges();
                            }
                        }
                    }
                }
                #endregion

                var reserveDetails = GetReserveDetail(rop.ProductSkus, productSkus);

                order.OriginalAmount = reserveDetails.Sum(m => m.OriginalAmount);
                order.DiscountAmount = reserveDetails.Sum(m => m.DiscountAmount);
                order.ChargeAmount   = reserveDetails.Sum(m => m.ChargeAmount);

                foreach (var detail in reserveDetails)
                {
                    var orderDetails = new OrderDetails();
                    orderDetails.Id                 = GuidUtil.New();
                    orderDetails.Sn                 = order.Sn + reserveDetails.IndexOf(detail).ToString();
                    orderDetails.ClientUserId       = rop.ClientUserId;
                    orderDetails.MerchId            = store.MerchId;
                    orderDetails.StoreId            = rop.StoreId;
                    orderDetails.SellChannelRefType = detail.SellChannelRefType;
                    orderDetails.SellChannelRefId   = detail.SellChannelRefId;
                    switch (detail.SellChannelRefType)
                    {
                    case E_StoreSellChannelRefType.Express:
                        orderDetails.SellChannelRefName = "【快递】";
                        orderDetails.Receiver           = rop.Receiver;
                        orderDetails.ReceiverPhone      = rop.ReceiverPhone;
                        orderDetails.ReceptionAddress   = rop.ReceptionAddress;
                        orderDetails.SellChannelRefType = E_StoreSellChannelRefType.Express;
                        orderDetails.SellChannelRefId   = GuidUtil.Empty();
                        break;

                    case E_StoreSellChannelRefType.SelfTake:
                        orderDetails.SellChannelRefName = "【店内自取】";
                        orderDetails.Receiver           = rop.Receiver;
                        orderDetails.ReceiverPhone      = rop.ReceiverPhone;
                        orderDetails.ReceptionAddress   = rop.ReceptionAddress;
                        orderDetails.SellChannelRefType = E_StoreSellChannelRefType.SelfTake;
                        orderDetails.SellChannelRefId   = GuidUtil.Empty();
                        break;

                    case E_StoreSellChannelRefType.Machine:
                        var machine = CurrentDb.Machine.Where(m => m.Id == detail.SellChannelRefId).FirstOrDefault();
                        if (machine == null)
                        {
                            LogUtil.Info("machine:为空");
                        }
                        orderDetails.SellChannelRefName = "【机器自提】 " + machine.Name;    //todo 若 ChannelType 为1 则机器昵称,2为自取
                        orderDetails.SellChannelRefType = E_StoreSellChannelRefType.Machine;
                        orderDetails.SellChannelRefId   = detail.SellChannelRefId;
                        orderDetails.Receiver           = null;
                        orderDetails.ReceiverPhone      = null;
                        orderDetails.ReceptionAddress   = store.Address;


                        break;
                    }
                    orderDetails.OrderId        = order.Id;
                    orderDetails.OrderSn        = order.Sn;
                    orderDetails.OriginalAmount = detail.OriginalAmount;
                    orderDetails.DiscountAmount = detail.DiscountAmount;
                    orderDetails.ChargeAmount   = detail.ChargeAmount;
                    orderDetails.Quantity       = detail.Quantity;
                    orderDetails.SubmitTime     = DateTime.Now;
                    orderDetails.Creator        = operater;
                    orderDetails.CreateTime     = DateTime.Now;


                    CurrentDb.OrderDetails.Add(orderDetails);

                    foreach (var detailsChild in detail.Details)
                    {
                        var orderDetailsChild = new OrderDetailsChild();
                        orderDetailsChild.Id                      = GuidUtil.New();
                        orderDetailsChild.Sn                      = orderDetails.Sn + detail.Details.IndexOf(detailsChild).ToString();
                        orderDetailsChild.ClientUserId            = rop.ClientUserId;
                        orderDetailsChild.MerchId                 = store.MerchId;
                        orderDetailsChild.StoreId                 = rop.StoreId;
                        orderDetailsChild.SellChannelRefType      = detailsChild.SellChannelRefType;
                        orderDetailsChild.SellChannelRefId        = detailsChild.SellChannelRefId;
                        orderDetailsChild.OrderId                 = order.Id;
                        orderDetailsChild.OrderSn                 = order.Sn;
                        orderDetailsChild.OrderDetailsId          = orderDetails.Id;
                        orderDetailsChild.OrderDetailsSn          = orderDetails.Sn;
                        orderDetailsChild.PrdProductSkuId         = detailsChild.SkuId;
                        orderDetailsChild.PrdProductSkuName       = detailsChild.SkuName;
                        orderDetailsChild.PrdProductSkuMainImgUrl = detailsChild.SkuImgUrl;
                        orderDetailsChild.SalePrice               = detailsChild.SalePrice;
                        orderDetailsChild.SalePriceByVip          = detailsChild.SalePriceByVip;
                        orderDetailsChild.Quantity                = detailsChild.Quantity;
                        orderDetailsChild.OriginalAmount          = detailsChild.OriginalAmount;
                        orderDetailsChild.DiscountAmount          = detailsChild.DiscountAmount;
                        orderDetailsChild.ChargeAmount            = detailsChild.ChargeAmount;
                        orderDetailsChild.SubmitTime              = DateTime.Now;
                        orderDetailsChild.Status                  = E_OrderStatus.WaitPay;
                        orderDetailsChild.Creator                 = operater;
                        orderDetailsChild.CreateTime              = DateTime.Now;
                        CurrentDb.OrderDetailsChild.Add(orderDetailsChild);

                        foreach (var detailsChildSon in detailsChild.Details)
                        {
                            var orderDetailsChildSon = new OrderDetailsChildSon();

                            orderDetailsChildSon.Id                      = GuidUtil.New();
                            orderDetailsChildSon.Sn                      = orderDetailsChild.Sn + detailsChild.Details.IndexOf(detailsChildSon);
                            orderDetailsChildSon.ClientUserId            = rop.ClientUserId;
                            orderDetailsChildSon.MerchId                 = store.MerchId;
                            orderDetailsChildSon.StoreId                 = rop.StoreId;
                            orderDetailsChildSon.SellChannelRefType      = detailsChildSon.SellChannelRefType;
                            orderDetailsChildSon.SellChannelRefId        = detailsChildSon.SellChannelRefId;
                            orderDetailsChildSon.OrderId                 = order.Id;
                            orderDetailsChildSon.OrderSn                 = order.Sn;
                            orderDetailsChildSon.OrderDetailsId          = orderDetails.Id;
                            orderDetailsChildSon.OrderDetailsSn          = orderDetails.Sn;
                            orderDetailsChildSon.OrderDetailsChildId     = orderDetailsChild.Id;
                            orderDetailsChildSon.OrderDetailsChildSn     = orderDetailsChild.Sn;
                            orderDetailsChildSon.SlotId                  = detailsChildSon.SlotId;
                            orderDetailsChildSon.PrdProductSkuId         = detailsChildSon.SkuId;
                            orderDetailsChildSon.PrdProductSkuName       = detailsChildSon.SkuName;
                            orderDetailsChildSon.PrdProductSkuMainImgUrl = detailsChildSon.SkuImgUrl;
                            orderDetailsChildSon.SalePrice               = detailsChildSon.SalePrice;
                            orderDetailsChildSon.SalePriceByVip          = detailsChildSon.SalePriceByVip;
                            orderDetailsChildSon.Quantity                = detailsChildSon.Quantity;
                            orderDetailsChildSon.OriginalAmount          = detailsChildSon.OriginalAmount;
                            orderDetailsChildSon.DiscountAmount          = detailsChildSon.DiscountAmount;
                            orderDetailsChildSon.ChargeAmount            = detailsChildSon.ChargeAmount;
                            orderDetailsChildSon.SubmitTime              = DateTime.Now;
                            orderDetailsChildSon.Creator                 = operater;
                            orderDetailsChildSon.CreateTime              = DateTime.Now;
                            orderDetailsChildSon.Status                  = E_OrderDetailsChildSonStatus.WaitPay;
                            CurrentDb.OrderDetailsChildSon.Add(orderDetailsChildSon);
                        }



                        foreach (var slotStock in detailsChild.SlotStock)
                        {
                            var machineStock = CurrentDb.StoreSellChannelStock.Where(m => m.PrdProductSkuId == slotStock.SkuId && m.SlotId == slotStock.SlotId && m.RefId == slotStock.SellChannelRefId).FirstOrDefault();

                            machineStock.LockQuantity += slotStock.Quantity;
                            machineStock.SellQuantity -= slotStock.Quantity;
                            machineStock.Mender        = operater;
                            machineStock.MendTime      = DateTime.Now;


                            var storeSellStockLog = new StoreSellChannelStockLog();
                            storeSellStockLog.Id              = GuidUtil.New();
                            storeSellStockLog.MerchId         = store.MerchId;
                            storeSellStockLog.StoreId         = rop.StoreId;
                            storeSellStockLog.RefType         = slotStock.SellChannelRefType;
                            storeSellStockLog.RefId           = slotStock.SellChannelRefId;
                            storeSellStockLog.SlotId          = slotStock.SlotId;
                            storeSellStockLog.PrdProductSkuId = slotStock.SkuId;
                            storeSellStockLog.SumQuantity     = machineStock.SumQuantity;
                            storeSellStockLog.LockQuantity    = machineStock.LockQuantity;
                            storeSellStockLog.SellQuantity    = machineStock.SellQuantity;
                            storeSellStockLog.ChangeType      = E_StoreSellChannelStockLogChangeTpye.Lock;
                            storeSellStockLog.ChangeQuantity  = slotStock.Quantity;
                            storeSellStockLog.Creator         = operater;
                            storeSellStockLog.CreateTime      = DateTime.Now;
                            storeSellStockLog.RemarkByDev     = string.Format("预定锁定库存:{0}", slotStock.Quantity);
                            CurrentDb.StoreSellChannelStockLog.Add(storeSellStockLog);
                        }
                    }
                }

                CurrentDb.Order.Add(order);

                CurrentDb.SaveChanges();

                ts.Complete();

                //Task4Factory.Global.Enter(TimerTaskType.CheckOrderPay, order.PayExpireTime.Value, order);

                ret.OrderId = order.Id;
                ret.OrderSn = order.Sn;

                result = new CustomJsonResult <RetOrderReserve>(ResultType.Success, ResultCode.Success, "预定成功", ret);
            }

            return(result);
        }
Example #18
0
        public CustomJsonResult Add(string operater, RopAgentMasterAdd rop)
        {
            var result = new CustomJsonResult();

            if (string.IsNullOrEmpty(rop.UserName))
            {
                return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "用户名不能为空"));
            }

            if (string.IsNullOrEmpty(rop.Password))
            {
                return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "密码不能为空"));
            }

            var isExistUserName = CurrentDb.SysUser.Where(m => m.UserName == rop.UserName).FirstOrDefault();

            if (isExistUserName != null)
            {
                return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, string.Format("该用户名({0})已被使用", rop.UserName)));
            }

            using (TransactionScope ts = new TransactionScope())
            {
                string agentId = GuidUtil.New();

                var user = new SysAgentUser();
                user.Id            = GuidUtil.New();
                user.PId           = GuidUtil.Empty();
                user.UserName      = rop.UserName;
                user.FullName      = rop.FullName;
                user.PasswordHash  = PassWordHelper.HashPassword(rop.Password);
                user.Email         = rop.Email;
                user.PhoneNumber   = rop.PhoneNumber;
                user.BelongSite    = Enumeration.BelongSite.Agent;
                user.IsDelete      = false;
                user.IsDisable     = false;
                user.IsMaster      = true;
                user.Depth         = 0;
                user.AgentId       = agentId;
                user.Creator       = operater;
                user.CreateTime    = DateTime.Now;
                user.RegisterTime  = DateTime.Now;
                user.SecurityStamp = Guid.NewGuid().ToString().Replace("-", "");
                user.YbInsureSign  = YbInsUtil.GetSign(user.Id, user.Id, user.PhoneNumber, user.FullName);

                CurrentDb.SysAgentUser.Add(user);

                var agent = new LocalS.Entity.Agent();
                agent.Id         = agentId;
                agent.UserId     = user.Id;
                agent.Name       = rop.FullName;
                agent.CreateTime = DateTime.Now;
                agent.Creator    = operater;
                CurrentDb.Agent.Add(agent);


                CurrentDb.SaveChanges();
                ts.Complete();

                result = new CustomJsonResult(ResultType.Success, ResultCode.Success, "保存成功");
            }

            return(result);
        }
Example #19
0
        public CustomJsonResult Cancle(string operater, string orderId, string cancelReason)
        {
            var result = new CustomJsonResult();


            using (TransactionScope ts = new TransactionScope())
            {
                var order = CurrentDb.Order.Where(m => m.Id == orderId).FirstOrDefault();

                if (order == null)
                {
                    LogUtil.Info(string.Format("该订单号:{0},找不到", orderId));
                    return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, string.Format("该订单号:{0},找不到", orderId)));
                }

                if (order.Status == E_OrderStatus.Cancled)
                {
                    return(new CustomJsonResult(ResultType.Success, ResultCode.Success, "该订单已经取消"));
                }

                if (order.Status == E_OrderStatus.Payed)
                {
                    return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "该订单已经支付成功"));
                }

                if (order.Status == E_OrderStatus.Completed)
                {
                    return(new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "该订单已经完成"));
                }

                if (order.Status != E_OrderStatus.Payed && order.Status != E_OrderStatus.Completed)
                {
                    order.Status       = E_OrderStatus.Cancled;
                    order.Mender       = GuidUtil.Empty();
                    order.MendTime     = DateTime.Now;
                    order.CancledTime  = DateTime.Now;
                    order.CancelReason = cancelReason;

                    var orderDetails = CurrentDb.OrderDetails.Where(m => m.OrderId == order.Id).ToList();

                    foreach (var item in orderDetails)
                    {
                        item.Status = E_OrderStatus.Cancled;
                        item.Mender = GuidUtil.Empty();
                        //item.MendTime = this.DateTime;
                    }


                    var orderDetailsChilds = CurrentDb.OrderDetailsChild.Where(m => m.OrderId == order.Id).ToList();

                    foreach (var item in orderDetailsChilds)
                    {
                        item.Status = E_OrderStatus.Cancled;
                        item.Mender = GuidUtil.Empty();
                        //item.MendTime = this.DateTime;
                    }

                    var orderDetailsChildSons = CurrentDb.OrderDetailsChildSon.Where(m => m.OrderId == order.Id).ToList();

                    foreach (var item in orderDetailsChildSons)
                    {
                        item.Status = E_OrderDetailsChildSonStatus.Cancled;
                        item.Mender = GuidUtil.Empty();
                        //item.MendTime = this.DateTime;

                        var machineStock = CurrentDb.StoreSellChannelStock.Where(m => m.MerchId == order.MerchId && m.StoreId == order.StoreId && m.PrdProductSkuId == item.PrdProductSkuId && m.SlotId == item.SlotId && m.RefId == item.SellChannelRefId && m.RefType == item.SellChannelRefType).FirstOrDefault();

                        machineStock.LockQuantity -= item.Quantity;
                        machineStock.SellQuantity += item.Quantity;
                        machineStock.Mender        = operater;
                        //machineStock.MendTime = this.DateTime;

                        var storeSellStockLog = new StoreSellChannelStockLog();
                        storeSellStockLog.Id = GuidUtil.New();
                        //storeSellStockLog.MerchantId = item.MerchantId;
                        storeSellStockLog.StoreId = item.StoreId;
                        //storeSellStockLog.ChannelType = item.ChannelType;
                        //storeSellStockLog.ChannelId = item.ChannelId;
                        storeSellStockLog.SlotId          = item.SlotId;
                        storeSellStockLog.PrdProductSkuId = item.PrdProductSkuId;
                        //storeSellStockLog.Quantity = machineStock.Quantity;
                        storeSellStockLog.LockQuantity = machineStock.LockQuantity;
                        storeSellStockLog.SellQuantity = machineStock.SellQuantity;
                        //storeSellStockLog.ChangeType = Enumeration.MachineStockLogChangeTpye.Lock;
                        storeSellStockLog.ChangeQuantity = item.Quantity;
                        storeSellStockLog.Creator        = operater;
                        //storeSellStockLog.CreateTime = this.DateTime;
                        storeSellStockLog.RemarkByDev = string.Format("取消订单,恢复库存:{0}", item.Quantity);
                        //CurrentDb.StoreSellChannelStock.Add(storeSellStockLog);
                    }

                    CurrentDb.SaveChanges();
                    ts.Complete();

                    result = new CustomJsonResult(ResultType.Success, ResultCode.Success, "已取消");
                }
            }

            return(result);
        }