public clientDataModel GetClientByClassID(QueryClientListParameter parameter)
 {
     this.ExecuteSQL    = "SELECT * FROM dbo.client WHERE classid=@classid";
     this.DataParameter = new IDbDataParameter[]
     {
         new SqlParameter("@classid", SqlDbType.VarChar)
         {
             Value = parameter.ParentId
         }
     };
     return(this.ExecuteReadSqlToclientDataModel());
 }
 public int UpdateChildNumberByClassId(IDbTransaction tran, QueryClientListParameter parameter)
 {
     this.ExecuteSQL    = "UPDATE dbo.client SET childnumber=childnumber+1 WHERE classid=@classid";
     this.DataParameter = new IDbDataParameter[]
     {
         new SqlParameter("@classid", SqlDbType.VarChar)
         {
             Value = parameter.ParentId
         }
     };
     return(this.ExecuteNonQuery(tran));
 }
 public List <clientDataModel> GetClientListByParentID(QueryClientListParameter parameter)
 {
     this.ExecuteSQL    = "SELECT * FROM dbo.client WHERE parentid=@parentid ORDER BY classid DESC";
     this.DataParameter = new IDbDataParameter[]
     {
         new SqlParameter("@parentid", SqlDbType.VarChar)
         {
             Value = parameter.ParentId
         }
     };
     return(this.ExecuteReadSqlToclientDataModelList());
 }
        public bool CheckClientIsExist(QueryClientListParameter parameter)
        {
            this.ExecuteSQL    = string.Format("SELECT * FROM dbo.client WHERE name=@name AND serialnumber=@serialnumber{0}", parameter.ClientId == 0 ? string.Empty : string.Concat(" AND clientid<>", parameter.ClientId));
            this.DataParameter = new IDbDataParameter[]
            {
                new SqlParameter("@name", parameter.Name),
                new SqlParameter("@serialnumber", parameter.SerialNumber)
            };
            var client = this.ExecuteReadSqlToclientDataModel();

            return(client != null);
        }
        public PageData <clientDataModel> GetQueryClientList(QueryClientListParameter parameter)
        {
            var isSearch = !(string.IsNullOrEmpty(parameter.SerialNumber) && string.IsNullOrEmpty(parameter.Name) && string.IsNullOrEmpty(parameter.Spelling) && string.IsNullOrEmpty(parameter.Alias) &&
                             string.IsNullOrEmpty(parameter.LinkMan) && string.IsNullOrEmpty(parameter.LinkTel) && parameter.PriceMode == 0 && parameter.Status == 0 && parameter.Deleted == 0);

            this.ExecuteSQL = string.Format("SELECT * FROM dbo.client WHERE {0} serialnumber LIKE '%{1}%' AND name LIKE '%{2}%' AND pinyin LIKE '%{3}%' AND alias LIKE '%{4}%' AND linkman LIKE '%{5}%' AND linktel LIKE '%{6}%' AND pricemode IN({7}) AND [status] IN({8}) AND deleted IN({9})",
                                            isSearch ? string.Empty : string.Format("parentid='{0}' AND", parameter.ParentId),
                                            parameter.SerialNumber,
                                            parameter.Name,
                                            parameter.Spelling,
                                            parameter.Alias,
                                            parameter.LinkMan,
                                            parameter.LinkTel,
                                            parameter.PriceMode == 0 ? "1,2,3" : parameter.PriceMode.ToString(),
                                            parameter.Status == (short)CommonStatus.Default ? string.Concat((short)CommonStatus.Used, ",", (short)CommonStatus.Stopped) : parameter.Status.ToString(),
                                            parameter.Deleted == (short)CommonDeleted.Default ? string.Concat((short)CommonDeleted.Deleted, ",", (short)CommonDeleted.NotDeleted) : parameter.Deleted.ToString()
                                            );
            return(this.ExecuteReadSqlToclientDataModelPageData("clientid", parameter.PageIndex, parameter.PageSize, "classid ASC, sort DESC"));
        }
        public RespondWebViewData <List <RespondQueryClientViewModel> > GetQueryClientList(RequestWebViewData <RequestQueryClientViewModel> request)
        {
            if (request.data == null)
            {
                request.data = new RequestQueryClientViewModel();
            }
            return(MemcacheHelper.Get(new RequestMemcacheParameter <RespondWebViewData <List <RespondQueryClientViewModel> > >
            {
                CacheKey = string.Format(PRE_CACHE_KEY, "GetQueryClientList"),

                #region =================
                CallBackFunc = () =>
                {
                    var parameter = new QueryClientListParameter
                    {
                        Alias = request.data.Alias,
                        Deleted = request.data.Deleted,
                        LinkMan = request.data.LinkMan,
                        LinkTel = request.data.LinkTel,
                        Name = request.data.Name,
                        PageSize = request.rows,
                        PageIndex = request.page,
                        ParentId = request.data.ParentId,
                        PriceMode = request.data.PriceMode,
                        SerialNumber = request.data.SerialNumber,
                        Spelling = request.data.Spelling,
                        Status = request.data.Status
                    };
                    var pageDataList = this.mClientDataAccess.GetQueryClientList(parameter);
                    var respond = new RespondWebViewData <List <RespondQueryClientViewModel> >
                    {
                        total = pageDataList.DataCount,
                        rows = pageDataList.Datas.Select(item => new RespondQueryClientViewModel
                        {
                            Address = item.address,
                            Alias = item.alias,
                            ChildNumber = item.childnumber,
                            ClassId = item.classid,
                            ClientId = item.clientid,
                            Comment = item.comment,
                            Credits = item.credits.ToCurrencyString(5),
                            Deleted = item.deleted,
                            LinkAddress = item.linkaddress,
                            LinkMan = item.linkman,
                            LinkTel = item.linktel,
                            Name = item.name,
                            ParentId = item.parentid,
                            Spelling = item.pinyin,
                            PriceMode = item.pricemode,
                            SerialNumber = item.serialnumber,
                            Status = item.status,
                            Sort = item.sort,
                            ZipCode = item.zipcode
                        }).ToList()
                    };
                    return respond;
                },
                #endregion

                ExpiresAt = DateTime.Now.AddMinutes(30),
                ManageCacheKeyForKey = ServiceMemcachedKeyManageConst.BasicClient,
                ParamsKeys = new object[]
                {
                    request.page,
                    request.rows,
                    request.data.Alias,
                    request.data.Deleted,
                    request.data.LinkMan,
                    request.data.LinkTel,
                    request.data.Name,
                    request.data.ParentId,
                    request.data.PriceMode,
                    request.data.SerialNumber,
                    request.data.Spelling,
                    request.data.Status
                }
            }));
        }
        public RespondWebViewData <RespondAddClientViewModel> AddClient(RequestWebViewData <RequestAddClientViewModel> request)
        {
            var rData = request.data;

            if (this.mClientDataAccess.CheckClientIsExist(new QueryClientListParameter {
                Name = rData.Name, SerialNumber = rData.SerialNumber
            }))
            {
                return(new RespondWebViewData <RespondAddClientViewModel>(WebViewErrorCode.ExistsDataInfo.ErrorCode, string.Format("名称为[{0}]或编号为[{1}]的往来单位已经存在", rData.Name, rData.SerialNumber)));
            }

            var respond = new RespondWebViewData <RespondAddClientViewModel>(WebViewErrorCode.Success);

            try
            {
                var client = this.mClientDataAccess.GetClientByClassID(new QueryClientListParameter {
                    ParentId = rData.ParentId
                });
                if (client == null)
                {
                    return(new RespondWebViewData <RespondAddClientViewModel>(WebViewErrorCode.NotExistsDataInfo));
                }
                if (client.deleted == (short)CommonDeleted.Deleted)
                {
                    return(new RespondWebViewData <RespondAddClientViewModel>(WebViewErrorCode.NotExistsDataInfo));
                }

                this.mDbConnection.ExecuteTransaction(tran =>
                {
                    var parameter = new QueryClientListParameter
                    {
                        ParentId = rData.ParentId
                    };
                    var classId    = string.Concat(rData.ParentId, "000001");
                    var clientList = this.mClientDataAccess.GetClientListByParentID(parameter);
                    if (clientList.Count > 0)
                    {
                        classId = BuildNewClassIdByLastClassId.GeneratedNewClassIdByLastClassId(clientList[0].classid);
                    }

                    var data = new clientDataModel
                    {
                        address      = rData.Address,
                        alias        = rData.Alias,
                        childnumber  = 0,
                        childcount   = 0,
                        classid      = classId,
                        comment      = rData.Comment,
                        credits      = rData.Credits,
                        deleted      = (short)CommonDeleted.NotDeleted,
                        linktel      = rData.LinkTel,
                        linkman      = rData.LinkMan,
                        linkaddress  = rData.LinkAddress,
                        name         = rData.Name,
                        pinyin       = rData.Spelling,
                        parentid     = rData.ParentId,
                        pricemode    = rData.PriceMode,
                        status       = (short)CommonStatus.Used,
                        serialnumber = rData.SerialNumber,
                        sort         = rData.Sort,
                        zipcode      = rData.ZipCode
                    };
                    var addResult = this.mClientDataAccess.Add(data, tran);
                    if (addResult > 0)
                    {
                        this.mClientDataAccess.UpdateChildNumberByClassId(tran, parameter);
                    }
                    MemcacheHelper.RemoveBy(ServiceMemcachedKeyManageConst.BasicClient);

                    //由于电脑配置不上mongodb固暂时先屏蔽掉此段mongodb的数据操作
                    //this.SaveMongoDbData("新增往来客户资料", request, respond, this.GetType());
                });
            }
            catch (Exception exception)
            {
                respond = new RespondWebViewData <RespondAddClientViewModel>(new ErrorCodeItem(WebViewErrorCode.Exception.ErrorCode, exception.Message));
            }
            return(respond);
        }