Exemplo n.º 1
0
        public async Task <ResultBase <List <FuncModel> > > GetMerchantMenus(int userId)
        {
            var data = new List <FuncModel>();

            data.Add(new FuncModel()
            {
                code  = "home",
                name  = "首页",
                items = new List <FuncItemResponse>()
                {
                    new FuncItemResponse()
                    {
                        name   = "salesman",
                        title  = "业务员管理",
                        parent = "home",
                    },
                    new FuncItemResponse()
                    {
                        name   = "shops",
                        title  = "店铺管理",
                        parent = "home",
                    },
                    new FuncItemResponse()
                    {
                        name   = "waybill",
                        title  = "运单管理",
                        parent = "home",
                    },
                }
            });
            return(ResultBase <List <FuncModel> > .Sucess(data));
        }
Exemplo n.º 2
0
        /// <summary>
        /// 分页获取所有业务员数据
        /// </summary>
        /// <param name="page"></param>
        /// <param name="size"></param>
        /// <param name="conditions"></param>
        /// <returns></returns>
        public async Task <ResultBase <PagedData <SaleManModel> > > GetPagedSalemans(int page, int size, Dictionary <string, string> conditions)
        {
            var data = await salemanManager.GetPagedSalemans(page, size, conditions);

            var result = new PagedData <SaleManModel>();

            if (data != null && data.Items?.Count() > 0)
            {
                result.PageCount  = data.PageCount;
                result.TotalCount = data.TotalCount;
                List <SaleManModel> models = new List <SaleManModel>();
                foreach (var item in data.Items)
                {
                    var model = item.Convert <SaleManModel>();
                    model.CreatedAt = ConvertHelper.ConvertDtToString(item.CreatedAt);

                    //获取所属店铺
                    model.ShopsCount = await salemanManager.FindShopsCount(item.Id);

                    models.Add(model);
                }
                result.Items = models;
            }
            return(ResultBase <PagedData <SaleManModel> > .Sucess(result));
        }
Exemplo n.º 3
0
        /// <summary>
        /// 获取业务员所有运单导出数据
        /// </summary>
        /// <param name="manager"></param>
        /// <returns></returns>
        public ResultBase <MemoryStream> ExportSalemanAllWaybills(Dictionary <string, string> conditions)
        {
            List <WaybillExportWithPriceModel> data = salemanManager.GetSalemanAllWaybills(conditions).GetAwaiter().GetResult();

            MemoryStream stream = new NPOIMemoryStream(false);

            ExcelHelper.WriteExcel(stream, "业务员运单", data);
            return(ResultBase <MemoryStream> .Sucess(stream));
        }
Exemplo n.º 4
0
        /// <summary>
        /// 获取
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <ResultBase <SaleManModel> > GetSalemanById(int id)
        {
            var data = await salemanManager.FindByIdAsync <SalemanEntity>(id);

            if (data == null)
            {
                return(ResultBase <SaleManModel> .Fail(Enum_ResultBaseCode.DataNotFoundError));
            }

            return(ResultBase <SaleManModel> .Sucess(data.Convert <SaleManModel>()));
        }
Exemplo n.º 5
0
        /// <summary>
        /// 逻辑删除
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        public async Task <ResultBase> Delete(string ids)
        {
            if (string.IsNullOrEmpty(ids))
            {
                return(ResultBase.Fail("参数缺失"));
            }
            var idsString = ids.Split(',');
            var idsList   = idsString.Select(id => Convert.ToInt32(id)).ToList();

            await salemanManager.LogicDeleteAsync <SalemanEntity>(idsList);

            return(ResultBase.Sucess());
        }
Exemplo n.º 6
0
        /// <summary>
        /// 获取业务员所有店铺导出数据
        /// </summary>
        /// <param name="manager"></param>
        /// <returns></returns>
        public ResultBase <MemoryStream> ExportSalemanAllShops(int salemanId, out string salemanName)
        {
            salemanName = "";
            List <ExportShopsModel> data = salemanManager.GetSalemanAllShops(salemanId).GetAwaiter().GetResult();

            if (data != null && data.Count > 0)
            {
                salemanName = data.First().SalemanName;
            }

            MemoryStream stream = new NPOIMemoryStream(false);

            ExcelHelper.WriteExcel(stream, "业务员店铺", data);
            return(ResultBase <MemoryStream> .Sucess(stream));
        }
Exemplo n.º 7
0
        /// <summary>
        /// 获取店铺信息
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <ResultBase <ShopsModel> > GetShopInfoById(int id)
        {
            var shops = shopsManager.FindById <ShopEntity>(id);

            if (shops == null)
            {
                return(ResultBase <ShopsModel> .Fail(Enum_ResultBaseCode.DataNotFoundError));
            }

            var saleman = salemanManager.FindById <SalemanEntity>(shops.SalemanId);

            if (saleman == null)
            {
                return(ResultBase <ShopsModel> .Fail("业务员数据错误"));
            }

            var result = shops.Convert <ShopsModel>();

            result.SalemanName = saleman.Name;

            return(ResultBase <ShopsModel> .Sucess(result));
        }
Exemplo n.º 8
0
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <ResultBase> Save(SaveSalemanModel request)
        {
            if (request == null)
            {
                return(ResultBase.Fail(Enum_ResultBaseCode.ParamError));
            }
            else if (string.IsNullOrEmpty(request.Name))
            {
                return(ResultBase.Fail(Enum_ResultBaseCode.ParamLackError));
            }

            if (request.Id == 0)
            {
                SalemanEntity entity = request.Convert <SalemanEntity>();
                entity.CreatedAt = DateTime.Now;
                entity.CreatedBy = 0;

                await salemanManager.InsertAsync(entity);
            }
            else
            {
                var entity = salemanManager.FindById <SalemanEntity>(request.Id);
                if (entity == null)
                {
                    return(ResultBase.Fail(Enum_ResultBaseCode.DataNotFoundError));
                }

                entity.Name            = request.Name;
                entity.Mobile          = request.Mobile;
                entity.SettlementPrice = request.SettlementPrice;
                entity.UpdatedAt       = DateTime.Now;
                entity.UpdatedBy       = 0;
                await salemanManager.UpdateAsync(entity);
            }
            return(ResultBase.Sucess());
        }
Exemplo n.º 9
0
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <ResultBase> Save(SaveShopsModel request)
        {
            if (request == null)
            {
                return(ResultBase.Fail(Enum_ResultBaseCode.ParamError));
            }
            else if (string.IsNullOrEmpty(request.Name))
            {
                return(ResultBase.Fail(Enum_ResultBaseCode.ParamLackError));
            }
            else if (string.IsNullOrEmpty(request.SalemanName))
            {
                return(ResultBase.Fail(Enum_ResultBaseCode.ParamLackError));
            }

            //校验业务员
            var saleman = await salemanManager.FindByName(request.SalemanName);

            if (saleman == null)
            {
                return(ResultBase.Fail("业务员不存在,请检查"));
            }

            //判断有没有同名的店铺
            var shop = await shopsManager.FindByNameWithDeleted(request.Name);

            if (shop != null)
            {
                if (shop.IsDelete)
                {
                    shop.IsDelete  = false;
                    shop.DeletedBy = 0;
                    shop.DeletedAt = null;
                    shop.UpdatedAt = DateTime.Now;
                    shop.UpdatedBy = 0;
                    await shopsManager.UpdateAsync(shop);
                }
            }
            else
            {
                if (request.Id == 0)
                {
                    ShopEntity entity = request.Convert <ShopEntity>();
                    entity.SalemanId = saleman.Id;
                    entity.CreatedAt = DateTime.Now;
                    entity.CreatedBy = 0;

                    await shopsManager.InsertAsync(entity);
                }
                else
                {
                    var entity = shopsManager.FindById <ShopEntity>(request.Id);
                    if (entity == null)
                    {
                        return(ResultBase.Fail(Enum_ResultBaseCode.DataNotFoundError));
                    }

                    entity.Name      = request.Name;
                    entity.Contact   = request.Contact;
                    entity.Mobile    = request.Mobile;
                    entity.SalemanId = saleman.Id;
                    entity.UpdatedAt = DateTime.Now;
                    entity.UpdatedBy = 0;
                    await salemanManager.UpdateAsync(entity);
                }
            }
            return(ResultBase.Sucess());
        }
Exemplo n.º 10
0
        /// <summary>
        /// 分页获取店铺数据
        /// </summary>
        /// <param name="page"></param>
        /// <param name="size"></param>
        /// <param name="conditions"></param>
        /// <returns></returns>
        public async Task <ResultBase <PagedData <ShopsModel> > > GetPagedShops(int page, int size, Dictionary <string, string> conditions)
        {
            var data = await shopsManager.GetPagedShops(page, size, conditions);

            return(ResultBase <PagedData <ShopsModel> > .Sucess(data));
        }
Exemplo n.º 11
0
        /// <summary>
        /// 导入店铺
        /// </summary>
        /// <param name="request"></param>
        /// <param name="files"></param>
        /// <param name="merchantId"></param>
        /// <returns></returns>
        public async Task <ResultBase> ImportShops(HttpFileCollectionBase files, int manager)
        {
            if (files == null || files.Count == 0)
            {
                return(ResultBase <UploadExcelCheckResultModel> .Fail("请上传文件"));
            }

            var file = files[0];

            if (file.ContentLength == 0)
            {
                return(ResultBase <UploadExcelCheckResultModel> .Fail("文件内容为空"));
            }

            string fileName = file.FileName;//取得文件名字
            var    fileExt  = fileName.Substring(fileName.LastIndexOf('.') + 1);

            string[] msExcelFiles = { "xlsx", "xls" };
            if (!msExcelFiles.Any(m => m == fileExt))
            {
                return(ResultBase <UploadExcelCheckResultModel> .Fail("只支持EXCEL文件"));
            }

            var filePath     = $"/Upload/Shops/";
            var saveFilePath = HttpContext.Current.Server.MapPath($"~{filePath}");

            if (!Directory.Exists(saveFilePath))
            {
                Directory.CreateDirectory(saveFilePath);
            }

            //改名称
            var    newFileName = ConvertHelper.ConvertDtToUnixTimeSpan(DateTime.Now) + "." + fileExt;
            string path        = saveFilePath + newFileName;//获取存储的目标地址

            file.SaveAs(path);

            //读取excel
            var data = ExcelHelper.ReadExcelNoIndex <ExportShopsModel>(path, "店铺上传");

            if (data == null || data.Count == 0)
            {
                return(ResultBase.Fail("没有有效数据"));
            }

            mLogHelper.Info($"开始执行导入快递单号,总量:{data.Count}");

            //分组批量插入数据
            var        groups  = data.GroupBy(m => m.SalemanName);
            List <int> taskIds = new List <int>();

            foreach (var group in groups)
            {
                var saleman = await salemanManager.FindByName(group.Key);

                if (saleman == null)
                {
                    continue;
                }

                var items = group.ToList();
                List <ShopEntity> entities = new List <ShopEntity>();
                var total = 0;
                foreach (var item in items)
                {
                    if (string.IsNullOrEmpty(item.Name) || string.IsNullOrEmpty(item.SalemanName))
                    {
                        continue;
                    }

                    var entity = item.Convert <ShopEntity>();
                    entity.SalemanId = saleman.Id;
                    entity.CreatedAt = DateTime.Now;
                    entity.CreatedBy = manager;
                    entities.Add(entity);
                    total += 1;
                }

                var trans = DapperDataAccess.BeginTransaction(IsolationLevel.ReadCommitted);
                try
                {
                    await shopsManager.InsertBatchAsync(entities, trans);

                    DapperDataAccess.Commit(trans);
                }
                catch (ShowMessageException ex)
                {
                    DapperDataAccess.Rollback(trans);
                    return(ResultBase.Fail(ex.Message));
                }
                catch (Exception ex)
                {
                    DapperDataAccess.Rollback(trans);
                    return(ResultBase.Fail(ex.Message));
                }
            }

            mLogHelper.Info($"导入执行完毕");
            return(ResultBase.Sucess());
        }
Exemplo n.º 12
0
        /// <summary>
        /// 导入店铺
        /// </summary>
        /// <param name="request"></param>
        /// <param name="files"></param>
        /// <param name="merchantId"></param>
        /// <returns></returns>
        public async Task <ResultBase> ImportWaybills(HttpFileCollectionBase files, int manager)
        {
            if (files == null || files.Count == 0)
            {
                return(ResultBase <UploadExcelCheckResultModel> .Fail("请上传文件"));
            }

            var file = files[0];

            if (file.ContentLength == 0)
            {
                return(ResultBase <UploadExcelCheckResultModel> .Fail("文件内容为空"));
            }

            string fileName = file.FileName;//取得文件名字
            var    fileExt  = fileName.Substring(fileName.LastIndexOf('.') + 1);

            string[] msExcelFiles = { "xlsx", "xls" };
            if (!msExcelFiles.Any(m => m == fileExt))
            {
                return(ResultBase <UploadExcelCheckResultModel> .Fail("只支持EXCEL文件"));
            }

            var filePath     = $"/Upload/Waybill/";
            var saveFilePath = HttpContext.Current.Server.MapPath($"~{filePath}");

            if (!Directory.Exists(saveFilePath))
            {
                Directory.CreateDirectory(saveFilePath);
            }

            string path = saveFilePath + file.FileName;//获取存储的目标地址

            file.SaveAs(path);

            try
            {
                //读取excel
                var data = ExcelHelper.ReadExcelNoIndex <WaybillExportModel>(path, "Sheet1");

                if (data == null || data.Count == 0)
                {
                    return(ResultBase.Fail("没有有效数据"));
                }
                else if (data.Count > 60000)
                {
                    return(ResultBase.Fail("excel表格行数过大,请分批导入"));
                }

                mLogHelper.Info($"开始执行导入快递单号,总量:{data.Count}");

                //检查数据
                var index = 1;
                foreach (var item in data)
                {
                    index++;
                    if (string.IsNullOrEmpty(item.ShopName))
                    {
                        return(ResultBase.Fail($"第{index}行,运单号{item.Code}, 店铺名为空"));
                    }
                    //查找店铺
                    var shop = await shopsManager.FindByName(item.ShopName);

                    if (shop == null)
                    {
                        return(ResultBase.Fail($"第{index}行,运单号{item.Code}, 店铺{item.ShopName}不存在,请先添加店铺"));
                    }
                    else if (shop.SalemanId == 0)
                    {
                        return(ResultBase.Fail($"第{index}行,运单号{item.Code},店铺{item.ShopName}业务员数据错误"));
                    }
                }

                var successedCount = 0;
                var exitsCount     = 0;

                //插入数据
                List <int> taskIds = new List <int>();
                foreach (var item in data)
                {
                    //查找店铺
                    var shop = await shopsManager.FindByName(item.ShopName);

                    //相同运单号跳过
                    var waybill = await waybillManager.FindByCode(item.Code);

                    if (waybill != null && !string.IsNullOrEmpty(waybill.Code))
                    {
                        exitsCount++;
                        continue;
                    }

                    WaybillEntity waybillEntity = new WaybillEntity()
                    {
                        Code      = item.Code,
                        ShopId    = shop.Id,
                        SalemanId = shop.SalemanId,
                        Time      = item.Time,
                        Province  = item.Province,
                        City      = item.City,
                        Weight    = item.Weight,
                        CreatedAt = DateTime.Now,
                        CreatedBy = manager,
                    };
                    await waybillManager.InsertAsync(waybillEntity);

                    successedCount++;
                }


                mLogHelper.Info($"导入执行完毕");
                return(ResultBase.Sucess($"总数居:{data.Count},成功执行:{successedCount},存在相同运单数:{exitsCount}"));
            }
            catch (Exception ex)
            {
                if (ex.Message.IndexOf("for key 'uk_waybillinfo_Code'") > -1)
                {
                    return(ResultBase.Fail($"存在相同运单号,{ex.Message}"));
                }
                else
                {
                    return(ResultBase.Fail(ex.Message));
                }
            }
        }