/// <summary>
        /// 获取服务费率设置表格数据
        /// </summary>
        /// <param name="nvl"></param>
        /// <returns></returns>
        public IEnumerable <dynamic> GetPayChannelDetail(System.Collections.Specialized.NameValueCollection nvl)
        {
            var pms = new
            {
                IsDeleted = nvl["LogData"] == null ? false : true,
                ChannelNo = nvl["ChannelNo"] == null ? 0 : nvl["ChannelNo"].ToType <int>()
            };
            var query = from pd in PCDetailRepost.GetQuery(o => o.ChannelNo == pms.ChannelNo && o.IsDeleted == pms.IsDeleted)
                        join jua in UserRepository.GetQuery() on pd.CreateUID equals jua.UserId into iua
                        from ua in iua.DefaultIfEmpty()
                        select new
            {
                Id                    = pd.Id,
                ChannelNo             = pd.ChannelNo,
                ChannelDetailId       = pd.ChannelDetailId,
                ChannelPayMode        = pd.ChannelPayMode,
                OptType               = pd.OptType,
                OverServiceRate       = pd.OverServiceRate,
                MonthFreeTradeAmount  = pd.MonthFreeTradeAmount,
                SingleServFeeLowLimit = pd.SingleServFeeLowLimit,
                SingleServFeeUpLimit  = pd.SingleServFeeUpLimit,
                EffectiveDate         = pd.EffectiveDate,
                CreateDT              = pd.CreateDT,
                CreateUID             = pd.CreateUID,
                Creater               = ua.FullName
            };

            return(query.ToPageList());
        }
        /// <summary>
        /// 获取收单渠道信息分页数据
        /// </summary>
        /// <param name="nvl"></param>
        /// <param name="totalCount"></param>
        /// <returns></returns>
        public IEnumerable <dynamic> GetPaging(System.Collections.Specialized.NameValueCollection nvl, out int totalCount)
        {
            var pms = new
            {
                KeyValues = nvl["KeyValues"] == null ? "" : nvl["KeyValues"].Trim(),
                //State = nvl["State"] == null ? new List<short>() : nvl["State"].Split(',').Select(o => short.Parse(o)).ToList()
                ChannelNo = nvl["ChannelNo"] == null ? 0 : nvl["ChannelNo"].ToType <int>()
            };
            var query = PCManageRepost.GetQuery().Where(o =>
                                                        o.ChannelCode.Contains(pms.KeyValues) || o.ChannelTitle.Contains(pms.KeyValues) || o.Memo.Contains(pms.KeyValues));

            if (pms.ChannelNo > 0)
            {
                query = query.Where(o => o.ChannelNo == pms.ChannelNo);
            }
            //if (pms.State.Count > 0)
            //    query = query.Where(o => pms.State.Contains(o.State));
            //else {
            //    query = query.Where(o => o.State != (short)PayChannelState.Cancel);
            //}
            query = from pm in query
                    join jpd in PCDetailRepost.GetQuery(o => o.IsDeleted == false) on pm.ChannelNo equals jpd.ChannelNo into ipd
                    from pd in ipd.DefaultIfEmpty()
                    join juc in UserRepository.GetQuery() on pm.CreateUID equals juc.UserId into iuc
                    from uc in iuc.DefaultIfEmpty()
                    join jua in UserRepository.GetQuery() on pm.AuditUID equals jua.UserId into iua
                    from ua in iua.DefaultIfEmpty()
                    select new PayChannelManageExt()
            {
                Id                    = pm.Id,
                ChannelNo             = pm.ChannelNo,
                ChannelCode           = pm.ChannelCode,
                ChannelTitle          = pm.ChannelTitle,
                State                 = pm.State,
                Memo                  = pm.Memo,
                AuditDT               = pm.AuditDT,
                AuditUID              = pm.AuditUID,
                Auditer               = ua.FullName,
                CreateDT              = pm.CreateDT,
                CreateUID             = pm.CreateUID,
                Creater               = uc.FullName,
                ChannelDetailId       = pd.ChannelDetailId,
                ChannelPayMode        = pd.ChannelPayMode,
                OptType               = pd.OptType,
                MonthFreeTradeAmount  = pd.MonthFreeTradeAmount,
                OverServiceRate       = pd.OverServiceRate,
                SingleServFeeLowLimit = pd.SingleServFeeLowLimit,
                SingleServFeeUpLimit  = pd.SingleServFeeUpLimit
            };

            totalCount = query.Count();
            return(query.ToPageList());
        }
        /// <summary>
        /// 是否允许添加收单细目类型
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public OpResult CanAddChannelDetail(PayChannelDetail model)
        {
            var existsObj = PCDetailRepost.GetQuery(o => o.ChannelNo == model.ChannelNo && o.ChannelPayMode == model.ChannelPayMode && o.IsDeleted == false).FirstOrDefault();

            if (existsObj != null)
            {
                return(OpResult.Fail(message: "所选支付方式的收单渠道已经存在,不可重复"));
            }
            else
            {
                return(OpResult.Success());
            }
        }
        /// <summary>
        /// 保存收单渠道细目-服务费率设置保存
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public OpResult SaveChannelDetail(PayChannelDetail model)
        {
            model.ChannelDetailId = CommonService.GUID;
            model.CreateDT        = DateTime.Now;
            model.CreateUID       = CurrentUser.UID;
            PCDetailRepost.Add(model, false);

            var result = PCDetailRepost.SaveChanges();

            if (result)
            {
                return(OpResult.Success(data: model));
            }
            else
            {
                return(OpResult.Fail(message: "保存失败"));
            }
        }
        /// <summary>
        /// 删除服务费率
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public OpResult RemoveDetailById(PayChannelDetail model)
        {
            var data = PCDetailRepost.GetQuery(o => o.ChannelDetailId == model.ChannelDetailId && o.IsDeleted == false).FirstOrDefault();

            if (data != null)
            {
                data.IsDeleted = true;
                var result = PCDetailRepost.SaveChanges();
                if (result)
                {
                    return(OpResult.Success(data: data));
                }
                else
                {
                    return(OpResult.Fail(message: "数据未修改,不可保存"));
                }
            }
            else
            {
                return(OpResult.Fail(message: "所选中数据已失效"));
            }
        }