public ActionResult Save(int?id)
        {
            //证件照
            string img = "";
            //结算账户
            BankCardInfo bankCardInfo = new BankCardInfo();
            //支付渠道
            AgentPay agentPay = new AgentPay();
            //是否存在下级代理商(0不存在,1是存在)
            string readOnly = "0";
            int    _id      = id == null ? 0 : Convert.ToInt32(id);
            bool   isE      = agentsInfoService.isExistPAgentsId(_id);

            if (isE)
            {
                readOnly = "1";
            }

            var obj = new AgentsInfo
            {
            };

            if (id.HasValue)
            {
                obj          = agentsInfoService.GetOne(id.Value);
                img          = Tool.getIdCardPhotoPath(obj.AgentsId) + obj.IdCardPhoto;
                bankCardInfo = bankCardInfoService.GetOne(obj.AgentsId);
                agentPay     = agentPayService.GetOne(obj.AgentsId);
            }

            //有效期
            ViewBag.ValidityY = ListToSelect(tradersService.getDataList(450).Select(o => new SelectListItem()
            {
                Value = o.DicSN.ToString(), Text = o.Title
            }), emptyTitle: "请选择");
            //是否存在下级代理商(0不存在,1是存在)
            ViewBag.ReadOnly = readOnly;
            //证件照
            ViewBag.img = img;
            //结算账户
            ViewBag.BankCardInfo = bankCardInfo;
            //支付渠道
            ViewBag.AgentPay = agentPay;
            //交易支付通道
            ViewBag.PayC = ListToSelect(agentsInfoService.GetPayApiList().Select(o => new SelectListItem()
            {
                Value = o.ApiNo.ToString(), Text = o.ApiName
            }), emptyTitle: "请选择");
            //指派人
            ViewBag.user = ListToSelect(tradersService.getUserList().Select(o => new SelectListItem()
            {
                Value = o.UserId, Text = o.FullName
            }), emptyTitle: "请选择");
            //代理商类型
            ViewBag.ty = ListToSelect(tradersService.getDataList(457).Select(o => new SelectListItem()
            {
                Value = o.DicSN.ToString(), Text = o.Title
            }), emptyTitle: "请选择");
            return(View(obj.IsNullThrow()));
        }
        /// <summary>
        /// 验证
        /// </summary>
        /// <param name="nvl"></param>
        /// <param name="AgentsId">代理商编号</param>
        /// <returns></returns>
        public OpResult Verification(System.Collections.Specialized.NameValueCollection nvl, int AgentsId)
        {
            //代理商简称
            var Name = (nvl["Name"] ?? "").Trim();
            //代理商全称
            var FullName = (nvl["FullName"] ?? "").Trim();
            //上级代理商编号
            var PAgentsId = (nvl["PAgentsId"] ?? "").Trim();
            //结算卡号
            var CardNum = (nvl["CardNum"] ?? "").Trim();
            //接口编号
            var PayChannel = (nvl["PayChannel"] ?? "").Trim();

            if (PayChannel == "")
            {
                PayChannel = "0";
            }
            //成本费率
            var Cost = (nvl["Cost"] ?? "").Trim();

            if (Cost == "")
            {
                Cost = "0.00";
            }
            //下级费率
            var Lower = (nvl["Lower"] ?? "").Trim();

            if (Lower == "")
            {
                Lower = "0.00";
            }

            if (PAgentsId != "")
            {
                if (!Tool.IsNumber(PAgentsId))
                {
                    return(OpResult.Fail("上级代理商编号不存在"));
                }
                else
                {
                    //上级代理商代理商编号是否存在
                    if (!isExistAgentsId(Convert.ToInt32(PAgentsId)))
                    {
                        return(OpResult.Fail("上级代理商编号不存在"));
                    }
                }
            }



            //代理商简称是否存在
            IQueryable <AgentsInfo> isExistName = null;

            if (AgentsId == 0)
            {
                isExistName = AgentsInfoRepository.GetQuery(o => o.Name == Name);
            }
            else
            {
                isExistName = AgentsInfoRepository.GetQuery(o => o.Name == Name && o.AgentsId != AgentsId);
            }
            if (isExistName.Any())
            {
                return(OpResult.Fail("该代理商简称已经存在"));
            }

            //代理商全称是否存在
            IQueryable <AgentsInfo> isExistFullName = null;

            if (AgentsId == 0)
            {
                isExistFullName = AgentsInfoRepository.GetQuery(o => o.FullName == FullName);
            }
            else
            {
                isExistFullName = AgentsInfoRepository.GetQuery(o => o.FullName == FullName && o.AgentsId != AgentsId);
            }
            if (isExistFullName.Any())
            {
                return(OpResult.Fail("该代理商全称已经存在"));
            }

            IQueryable <BankCardInfo> isExistCardNum = null;

            if (AgentsId == 0)
            {
                isExistCardNum = bankCardInfoRepository.GetQuery(o => o.CardNum.Trim() == CardNum && o.Type == 1);
            }
            else
            {
                isExistCardNum = bankCardInfoRepository.GetQuery(o => o.CardNum.Trim() == CardNum && o.Type == 1 && o.AgentsId != AgentsId);
            }
            if (isExistCardNum.Any())
            {
                return(OpResult.Fail("该结算卡号已经存在"));
            }

            if (PAgentsId != "")
            {
                AgentPay agentPay = agentPayService.GetOne(Convert.ToInt32(PAgentsId));
                if (agentPay != null)
                {
                    if (Cost != "0.00" && agentPay.Lower != Convert.ToDecimal(Cost))
                    {
                        return(OpResult.Fail("成本费率必须和上级代理商:" + PAgentsId + "设定的下级费率相同"));
                    }
                }
            }

            string[] str = new string[2];
            str = isCost(Convert.ToInt32(PayChannel), Convert.ToDecimal(Cost));
            if (str[0] == "1")
            {
                return(OpResult.Fail("成本费率不能小于交易支付通道成本费率"));
            }

            return(OpResult.Success());
        }
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="agentsInfo">基本信息</param>
        /// <param name="hpf">证件照</param>
        /// <param name="nvl"></param>
        /// <returns></returns>
        public OpResult Save(AgentsInfo agentsInfo, HttpPostedFileBase hpf, System.Collections.Specialized.NameValueCollection nvl)
        {
            try
            {
                using (EFDbContext context = new EFDbContext())
                {
                    using (TransactionScope transaction = new TransactionScope())
                    {
                        //基本信息
                        OpResult op = SaveOrUpdate(agentsInfo, hpf);
                        //代理商编号
                        int AgentsId = Convert.ToInt32(op.Message);


                        //删除已经存在的代理商下级关系
                        int[] ids = AgentsRelationshipRepository.GetQuery(o => o.SubAgentsId == AgentsId).Select(o => o.Id).ToArray();
                        agentsRelationshipService.Deletes(ids);

                        //上级代理商编号
                        int pid = Convert.ToInt32(op.Message);
                        //代理商下级关系
                        for (int i = 0; i < 3; i++)
                        {
                            AgentsRelationship agentsRelationship = new AgentsRelationship();
                            AgentsInfo         aInfo = AgentsInfoRepository.GetQuery(o => o.AgentsId == pid).FirstOrDefault();
                            pid = aInfo.PAgentsId;
                            agentsRelationship.SubAgentsId = AgentsId;
                            agentsRelationship.AgentsId    = pid;
                            agentsRelationship.Status      = 1;
                            if (pid == 0 && i == 0)
                            {
                                agentsRelationship.Depth = 0;
                                agentsRelationshipService.SaveOrUpdate(agentsRelationship);
                                break;
                            }
                            else if (pid == 0 && i != 0)
                            {
                                break;
                            }
                            else if (pid != 0)
                            {
                                agentsRelationship.Depth = Convert.ToInt16(i + 1);
                            }
                            agentsRelationshipService.SaveOrUpdate(agentsRelationship);
                        }


                        //结算银行机构
                        string Agency = (nvl["Agency"] ?? "").Trim();
                        //结算账户类型
                        string BillingType = (nvl["BillingType"] ?? "").Trim();
                        //结算卡号
                        string CardNum = (nvl["CardNum"] ?? "").Trim();
                        //账户名称
                        string CardName = (nvl["CardName"] ?? "").Trim();
                        //账户状态
                        string cardStatus = (nvl["cardStatus"] ?? "").Trim();
                        //交易支付通道
                        string PayChannel = (nvl["PayChannel"] ?? "").Trim();
                        //成本费率(%)
                        string Cost = (nvl["Cost"] ?? "").Trim();
                        //下级费率(%)
                        string Lower = (nvl["Lower"] ?? "").Trim();

                        //结算账户
                        BankCardInfo bankCardInfo = new BankCardInfo();
                        bankCardInfo.AgentsId    = AgentsId;
                        bankCardInfo.Type        = 1;
                        bankCardInfo.Agency      = Agency;
                        bankCardInfo.BillingType = BillingType == "" ? -1 : Convert.ToInt32(BillingType);
                        bankCardInfo.CardNum     = CardNum;
                        bankCardInfo.CardName    = CardName;
                        bankCardInfo.Status      = cardStatus == "" ? -1 : Convert.ToInt32(cardStatus);
                        if (agentsInfo.Id > 0)
                        {
                            int          bankCardInfoId = 0;
                            BankCardInfo bankCardInfo2  = bankCardInfoService.GetOne(AgentsId);
                            if (bankCardInfo2 != null)
                            {
                                bankCardInfoId = bankCardInfo2.Id;
                            }
                            bankCardInfo.Id = bankCardInfoId;
                        }
                        bankCardInfoService.SaveOrUpdate(bankCardInfo);

                        //支付渠道
                        AgentPay agentPay = new AgentPay();
                        agentPay.AgentsId = AgentsId;
                        agentPay.ApiNo    = PayChannel == "" ? -1 : Convert.ToInt32(PayChannel);
                        agentPay.Cost     = Cost == "" ? Convert.ToDecimal("0.00") : Convert.ToDecimal(Cost);
                        agentPay.Lower    = Lower == "" ? Convert.ToDecimal("0.00") : Convert.ToDecimal(Lower);
                        if (agentsInfo.Id > 0)
                        {
                            int      agentPayId = 0;
                            AgentPay agentPay2  = agentPayService.GetOne(AgentsId);
                            if (agentPay2 != null)
                            {
                                agentPayId = agentPay2.Id;
                            }
                            agentPay.Id = agentPayId;
                        }
                        agentPayService.SaveOrUpdate(agentPay);

                        //提交事务
                        transaction.Complete();
                        return(OpResult.Success());
                    }
                }
            }
            catch (Exception e)
            {
                LogEngine.WriteError(e);
                return(OpResult.Fail(e.InnerException.InnerException.Message));
            }
        }