Exemple #1
0
        protected override UnitVipListRD ProcessRequest(DTO.Base.APIRequest <UnitVipListRP> pRequest)
        {
            var rd = new UnitVipListRD();
            var rp = pRequest.Parameters;
            var agg_UnitPotentialVipBLL      = new Agg_UnitPotentialVipBLL(CurrentUserInfo);
            var agg_Unit3MonthNoBackVipBLL   = new Agg_Unit3MonthNoBackVipBLL(CurrentUserInfo);
            var agg_UnitBirthdayNoBackVipBLL = new Agg_UnitBirthdayNoBackVipBLL(CurrentUserInfo);
            var vipBLL = new VipBLL(CurrentUserInfo);
            var lstUnitPotentialVip      = default(PagedQueryResult <Agg_UnitPotentialVipEntity>);
            var lstUnit3MonthNoBackVip   = default(PagedQueryResult <Agg_Unit3MonthNoBackVipEntity>);
            var lstUnitBirthdayNoBackVip = default(PagedQueryResult <Agg_UnitBirthdayNoBackVipEntity>);
            var lstVip = default(PagedQueryResult <VipEntity>);

            #region 查询数据
            var tasks = new List <Task>();
            switch (rp.Type)
            {
            case 1:    //新增潜力会员列表
                tasks.Add(Task.Factory.StartNew(() =>
                {
                    lstUnitPotentialVip = agg_UnitPotentialVipBLL.PagedQueryForVip(rp.CustomerID, rp.UnitID, Convert.ToDateTime(rp.Date), rp.PageIndex, rp.PageSize);
                }));
                break;

            case 2:    //三个月内新增未复购会员列表
                tasks.Add(Task.Factory.StartNew(() =>
                {
                    lstUnit3MonthNoBackVip = agg_Unit3MonthNoBackVipBLL.PagedQueryForVip(rp.CustomerID, rp.UnitID, Convert.ToDateTime(rp.Date), rp.PageIndex, rp.PageSize);
                }));
                break;

            case 3:    //当月未回店生日会员列表
                tasks.Add(Task.Factory.StartNew(() =>
                {
                    lstUnitBirthdayNoBackVip = agg_UnitBirthdayNoBackVipBLL.PagedQueryForVip(rp.CustomerID, rp.UnitID, Convert.ToDateTime(rp.Date), false, rp.PageIndex, rp.PageSize);
                }));
                break;

            case 4:    //店铺会员列表
                tasks.Add(Task.Factory.StartNew(() =>
                {
                    lstVip = vipBLL.PagedQueryForCurrentVip(rp.CustomerID, rp.UnitID, rp.PageIndex, rp.PageSize);
                }));
                break;
            }
            //查询数据库
            Task.WaitAll(tasks.ToArray());
            #endregion

            #region 设置返回
            switch (rp.Type)
            {
            case 1:    //新增潜力会员列表
                rd.VipList = lstUnitPotentialVip.Entities.Select(p => new UnitVipList()
                {
                    Sort     = 0,
                    VipName  = p.VipName,
                    VipPhone = p.Phone
                }).ToList();
                rd.TotalPageCount = lstUnitPotentialVip.PageCount;
                rd.TotalCount     = lstUnitPotentialVip.RowCount;
                break;

            case 2:    //三个月内新增未复购会员列表
                rd.VipList = lstUnit3MonthNoBackVip.Entities.Select(p => new UnitVipList()
                {
                    Sort     = 0,
                    VipName  = p.VipName,
                    VipPhone = p.Phone
                }).ToList();
                rd.TotalPageCount = lstUnit3MonthNoBackVip.PageCount;
                rd.TotalCount     = lstUnit3MonthNoBackVip.RowCount;
                break;

            case 3:    //当月未回店生日会员列表
                rd.VipList = lstUnitBirthdayNoBackVip.Entities.Select(p => new UnitVipList()
                {
                    Sort     = 0,
                    VipName  = p.VipName,
                    VipPhone = p.Phone
                }).ToList();
                rd.TotalPageCount = lstUnitBirthdayNoBackVip.PageCount;
                rd.TotalCount     = lstUnitBirthdayNoBackVip.RowCount;
                break;

            case 4:    //店铺会员列表
                rd.VipList = lstVip.Entities.Select(p => new UnitVipList()
                {
                    Sort     = 0,
                    VipName  = p.VipName,
                    VipPhone = p.Phone
                }).ToList();
                rd.TotalPageCount = lstVip.PageCount;
                rd.TotalCount     = lstVip.RowCount;
                break;
            }
            //排序
            for (int i = 0; i < rd.VipList.Count; i++)
            {
                rd.VipList[i].Sort = i + 1;
            }

            #endregion

            return(rd);
        }