public ActionResult Confirm(long id = 0, List <long> batchs = null, string remark = "") { if (id > 0) { DistributionApplication.AuditingWithdraw(id, CurrentManager.UserName, remark); } else if (batchs != null) { var error = 0; foreach (var item in batchs) { try { DistributionApplication.AuditingWithdraw(item, CurrentManager.UserName, remark); } catch (Exception ex) { Log.Error("审核佣金提现失败:", ex); error++; } } if (error == 0) { } else { return(Json(new { success = false, msg = "审核操作完成,但部分提现失败,请检查!" })); } } else { return(Json(new { success = false, msg = "无效参数" })); } return(Json(new { success = true }, true)); }
public JsonResult SaveBaseConfig(DistributionConfigBaseConfigModel model) { if (!ModelState.IsValid) { throw new MallException("有错误的参数"); } if (model.DistributionIsEnable) { if ((model.DistributionMaxLevel < 1 || model.DistributionMaxLevel > 3)) { throw new MallException("错误的分销等级设置"); } if ((model.DistributionMaxBrokerageRate < 0.1m || model.DistributionMaxBrokerageRate > 100)) { throw new MallException("最高分佣比例需在0.1%~100%之间,且只能保留一位小数!"); } } SiteSettingApplication.SiteSettings.DistributionCanSelfBuy = model.DistributionCanSelfBuy; SiteSettingApplication.SiteSettings.DistributionIsEnable = model.DistributionIsEnable; SiteSettingApplication.SiteSettings.DistributionIsProductShowTips = model.DistributionIsProductShowTips; SiteSettingApplication.SiteSettings.DistributionMaxBrokerageRate = model.DistributionMaxBrokerageRate; SiteSettingApplication.SiteSettings.DistributionMaxLevel = model.DistributionMaxLevel; SiteSettingApplication.SiteSettings.DistributorApplyNeedQuota = model.DistributorApplyNeedQuota; SiteSettingApplication.SiteSettings.DistributorNeedAudit = model.DistributorNeedAudit; SiteSettingApplication.SaveChanges(); DistributionApplication.ResetDefaultBrokerageRate(SiteSettingApplication.SiteSettings.DistributionMaxLevel); return(Json(new { success = true })); }
public ActionResult CheckGenerate() { //是否完成生成任务 var completed = !DistributionApplication.CheckGenerating(); return(Json(new { success = completed }, true)); }
/// <summary> /// 导出佣金管理 /// </summary> /// <param name="query"></param> /// <returns></returns> public ActionResult ManagementExportToExcel(DistributorSubQuery query) { query.IncludeNoSettlementAmount = true; var result = DistributionApplication.GetDistributorsAll(query); return(ExcelView("ManagementExport", "平台佣金管理", result)); }
protected override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext); bool isclose = !SiteSettingApplication.SiteSettings.DistributionIsEnable; if (isclose && RouteData.Values["action"].ToString().ToLower() != "nosetting") { Response.Clear(); Response.BufferOutput = true; Response.Redirect(Url.Action("NoSetting")); } curshopid = CurrentSellerManager.ShopId; var dbkdata = DistributionApplication.GetDefaultBrokerageRate(curshopid); isConfigRight = true; if (dbkdata.BrokerageRate1 < 0.1m || dbkdata.BrokerageRate1 > 100) { isConfigRight = false; } if (SiteSettings.DistributionMaxLevel > 1 && (dbkdata.BrokerageRate2 < 0.1m || dbkdata.BrokerageRate2 > 100)) { isConfigRight = false; } if (SiteSettings.DistributionMaxLevel > 2 && (dbkdata.BrokerageRate3 < 0.1m || dbkdata.BrokerageRate3 > 100)) { isConfigRight = false; } if (SiteSettings.DistributionMaxBrokerageRate < (dbkdata.BrokerageRate1 + dbkdata.BrokerageRate2 + dbkdata.BrokerageRate3)) { isConfigRight = false; } }
/// <summary> /// 导出销售员 /// </summary> /// <param name="query"></param> /// <returns></returns> public ActionResult ExportToExcelDistributor(DistributorQuery query) { query.IsIncludeMember = false; if (query.StartTime.HasValue) { query.StartTime = query.StartTime.Value.Date; } if (query.EndTime.HasValue) { query.EndTime = query.EndTime.Value.AddDays(1).Date; } if (query.Sort.ToLower() == "ShowApplyTime".ToLower()) { query.Sort = "ApplyTime"; } var results = DistributionApplication.GetDistributorsAll(query); if (results != null && results.Count() > 0) { results[0].DistributionMaxLevel = SiteSettings.DistributionMaxLevel;//最大分销级数,这里实体第一个保存值是导出方便取值 } return(ExcelView("ExportDistributor", "平台销售员列表", results)); }
/// <summary> /// 导出商品分销明细 /// </summary> /// <param name="query"></param> /// <returns></returns> public ActionResult ProductsExportToExcel(DistributionProductQuery query) { query.ShopId = CurrentSellerManager.ShopId; var results = DistributionApplication.GetProductsAll(query); return(ExcelView("ProductsExport", "商家商品分销明细", results)); }
/// <summary> /// 是否可以申请销售员 /// </summary> /// <returns></returns> public JsonResult <Result <bool> > GetCanApplyMyShop() { CheckUserLogin(); var sitesettings = SiteSettingApplication.SiteSettings; DistributorInfo currentDistributor = DistributionApplication.GetDistributor(CurrentUser.Id); if (sitesettings.DistributorApplyNeedQuota > 0) { var _u = MemberApplication.GetMember(CurrentUser.Id); if (_u.NetAmount < sitesettings.DistributorApplyNeedQuota) { return(Json(ErrorResult <bool>("需要累计消费金额达到" + sitesettings.DistributorApplyNeedQuota + "元才可申请哦!"))); } } if (currentDistributor != null) { if (currentDistributor.DistributionStatus == (int)DistributorStatus.NotAvailable) { return(Json(ErrorResult <bool>("您己经被清退,不可以申请!"))); } if (currentDistributor.DistributionStatus == (int)DistributorStatus.Audited) { return(Json(ErrorResult <bool>("您己经是销售员,不可以重复申请!"))); } if (currentDistributor.DistributionStatus == (int)DistributorStatus.UnAudit) { return(Json(ErrorResult <bool>("您己经提交销售员申请,请耐心等待!"))); } } return(JsonResult(true)); }
/// <summary> /// 审核销售员 /// </summary> /// <param name="ids"></param> /// <returns></returns> private Result BatAuditDistributor(List <long> ids, string remark, DistributorStatus status) { Result result = new Result { success = false, msg = "错误的编号参数" }; if (status != DistributorStatus.Audited && status != DistributorStatus.Refused) { result = new Result { success = false, msg = "错误的状态参数" }; return(result); } if (ids.Count() > 0) { switch (status) { case DistributorStatus.Refused: DistributionApplication.RefuseDistributor(ids, remark); break; case DistributorStatus.Audited: DistributionApplication.AgreeDistributor(ids, remark); break; } result = new Result { success = true, msg = "审核销售员完成" }; } return(result); }
public JsonResult ChangeSuper(long id, long superId) { Result result = new Result { success = false, msg = "未知错误" }; if (superId == 0 || id == 0) { throw new MallException("错误的参数"); } if (id == superId) { throw new MallException("不可以调整自己为自己的上级"); } var super = DistributionApplication.GetDistributor(superId); if (super.SuperiorId > 0) { throw new MallException("调整上级只可以为一级销售员"); } DistributionApplication.UpdateDistributorSuperId(id, superId); result.success = true; result.msg = "操作成功"; return(Json(result)); }
/// <summary> /// 申请提现 /// </summary> /// <param name="post"></param> /// <returns></returns> public JsonResult <Result <bool> > PostWithdraw(DistributionApplyWithdraw post) { CheckUserLogin(); var sitesettings = SiteSettingApplication.SiteSettings; post.MemberId = CurrentUser.Id; if (post.Type == DistributionWithdrawType.WeChat) //获取用户微信账户 { var mo = MemberApplication.GetMemberOpenIdInfoByuserId(CurrentUser.Id, Entities.MemberOpenIdInfo.AppIdTypeEnum.Payment, "Himall.Plugin.OAuth.WeiXin"); if (mo == null) { return(Json(ErrorResult <bool>("无法获取微信账号,请先在微信端绑定账号!"))); } var openid = mo.OpenId; post.WithdrawAccount = openid; if (!(string.IsNullOrWhiteSpace(sitesettings.WeixinAppId) || string.IsNullOrWhiteSpace(sitesettings.WeixinAppSecret))) { string token = AccessTokenContainer.TryGetToken(sitesettings.WeixinAppId, sitesettings.WeixinAppSecret); var user = CommonApi.GetUserInfo(token, openid); post.WithdrawName = user?.nickname ?? string.Empty; } } DistributionApplication.ApplyWithdraw(post); return(JsonResult(true)); }
/// <summary> /// 默认佣金设置 /// </summary> /// <returns></returns> public ActionResult DefaultBrokerage() { var data = DistributionApplication.GetDefaultBrokerageRate(curshopid); var model = new DistributionDefaultBrokerageModel() { BrokerageRate1 = data.BrokerageRate1, BrokerageRate2 = data.BrokerageRate2, BrokerageRate3 = data.BrokerageRate3, DistributionMaxBrokerageRate = SiteSettings.DistributionMaxBrokerageRate, DistributionMaxLevel = SiteSettings.DistributionMaxLevel }; model.IsConfigRight = true; if (model.BrokerageRate1 + model.BrokerageRate2 + model.BrokerageRate3 > model.DistributionMaxBrokerageRate) { model.IsConfigRight = false; } if (model.BrokerageRate1 <= 0) { model.IsConfigRight = false; } if (model.DistributionMaxLevel > 1 && model.BrokerageRate2 <= 0) { model.IsConfigRight = false; } if (model.DistributionMaxLevel > 2 && model.BrokerageRate3 <= 0) { model.IsConfigRight = false; } return(View(model)); }
public JsonResult GetAllProductIds() { List <long> proids = new List <long>(); proids = DistributionApplication.GetAllDistributionProductIds(curshopid); return(Json(proids)); }
/// <summary> /// 获取是否开启了分销和当前是否为分销 /// </summary> /// <returns></returns> public JsonResult GetIsShowDistributionHead() { var isShowDistributionHead = (SiteSettingApplication.SiteSettings.DistributionIsEnable && CurrentSpreadId > 0); var result = DistributionApplication.GetDistributor(CurrentSpreadId.Value); isShowDistributionHead = isShowDistributionHead && result.IsShowShopLogo; return(Json(new { success = true, isShowDistributionHead }, true)); }
/// <summary> ///账号密码登录 /// </summary> /// <returns></returns> public object GetLoginByUserName(string openId = "", string userName = "", string password = "", string nickName = "") { if (!string.IsNullOrEmpty(openId) && !string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(password)) { UserMemberInfo member = null; try { member = ServiceProvider.Instance <IMemberService> .Create.Login(userName, password); } catch (Exception ex) { GetErrorJson(ex.Message); } if (member == null) { GetErrorJson("用户名或密码错误"); } else { if (member != null) { bool IsUpdate = true; //如果不是一键登录的 则绑定openId if (!string.IsNullOrEmpty(openId)) { //UserMemberInfo memberopen = ServiceProvider.Instance<IMemberService>.Create.GetMemberByOpenId(SmallProgServiceProvider, openId); //if (memberopen == null) //{ // IsUpdate = true; // //新增openId记录 //} //else //{ // if (memberopen.Id != member.Id) // { MemberOpenIdInfo memberOpenIdInfo = new MemberOpenIdInfo() { UserId = member.Id, OpenId = openId, ServiceProvider = SmallProgServiceProvider, AppIdType = Himall.Model.MemberOpenIdInfo.AppIdTypeEnum.Normal, UnionId = string.Empty }; LoginHelper.ChangeOpenIdBindMember(memberOpenIdInfo); // } //} } string memberId = UserCookieEncryptHelper.Encrypt(member.Id, CookieKeysCollection.USERROLE_USER); var prom = DistributionApplication.GetPromoterByUserId(member.Id); return(GetMember(member, openId)); } } } return(Json(new { Success = "No" })); }
public JsonResult AddProducts(string ids) { Result result = new Result { success = false, msg = "未知错误" }; bool isDataOk = true; List <long> productids = new List <long>(); if (!isConfigRight) { isDataOk = false; result = new Result { success = false, msg = "错误的默认佣金比,请设置默认佣金比" }; } if (isDataOk) { if (!Regex.IsMatch(ids, @"^(\d|,)+?")) { isDataOk = false; result = new Result { success = false, msg = "错误的商品编号列表" }; } } //组装id数据 if (isDataOk) { string[] _arrid = ids.Split(','); foreach (string item in _arrid) { long _proid = 0; if (long.TryParse(item, out _proid)) { if (_proid > 0) { productids.Add(_proid); } } } if (productids.Count < 1) { isDataOk = false; result = new Result { success = false, msg = "错误的商品编号列表" }; } else { DistributionApplication.AddSpreadProducts(productids, curshopid); result = new Result { success = true, msg = "添加分销商品成功" }; } } return(Json(result)); }
public ActionResult Management(long?gradeId) { DistributorManagementModel result = new DistributorManagementModel(); result.Grades = DistributionApplication.GetDistributorGrades(); result.DistributionMaxLevel = SiteSettings.DistributionMaxLevel; result.SiteSetting = SiteSettingApplication.SiteSettings; result.GradeId = gradeId; return(View(result)); }
/// <summary> /// 会员详情页 /// </summary> /// <param name="id"></param> /// <returns></returns> public ActionResult MemberDetail(long id) { var member = MemberApplication.GetMembers(id); var model = new MemberViewModels.MemberDetail(); member.Map(model); model.IsPromoter = DistributionApplication.IsPromoter(id); return(View(model)); }
/// <summary> /// 导出分销订单业绩 /// </summary> /// <param name="query"></param> /// <returns></returns> public ActionResult OrdersExportToExcel(BrokerageOrderQuery query) { if (query.SettlementEnd.HasValue) { query.SettlementEnd = query.SettlementEnd.Value.AddDays(1); } var orderResults = DistributionApplication.GetBrokerageOrdersAll(query, true, true); return(ExcelView("OrdersExport", "平台分销订单明细", orderResults)); }
public JsonResult GetProductList(string skey, int rows, int page, long categoryId = 0) { //查询条件 DistributionProductQuery query = new DistributionProductQuery(); query.ProductName = skey; query.PageSize = rows; query.PageNo = page; query.Status = DistributionProductStatus.Normal; query.ShopId = curshopid; if (categoryId != 0) { query.CategoryId = categoryId; } query.isShopCategory = true; var data = DistributionApplication.GetProducts(query); var datalist = new List <DistributionProductListModel>(); if (data.Models != null) { var products = ProductManagerApplication.GetProductsByIds(data.Models.Select(p => p.ProductId).ToList()); var categories = CategoryApplication.GetCategories(); foreach (var item in data.Models) { var product = products.FirstOrDefault(p => p.Id == item.ProductId); var categorie = categories.FirstOrDefault(p => p.Id == product.Id); datalist.Add(new DistributionProductListModel { BrokerageId = item.Id, ProductId = item.ProductId, ProductName = product.ProductName, CategoryId = product.CategoryId, CategoryName = GetProductShopCategorieName(product.Id), ShopId = item.ShopId, BrokerageRate1 = item.BrokerageRate1, BrokerageRate2 = item.BrokerageRate2, BrokerageRate3 = item.BrokerageRate3, MaxBrokerage = item.MaxBrokerage, MaxSalePrice = item.MaxSalePrice, MinSalePrice = item.MinSalePrice, NoSettlementAmount = item.NoSettlementAmount, ProductStatus = item.ProductStatus, SaleAmount = item.SaleAmount, SaleCount = item.SaleCount, SettlementAmount = item.SettlementAmount, ShopName = item.ShopName }); } } var result = new { rows = datalist, total = data.Total }; return(Json(result)); }
/// <summary> /// 导出分销订单业绩 /// </summary> /// <param name="query"></param> /// <returns></returns> public ActionResult OrdersExportToExcel(BrokerageOrderQuery query) { query.ShopId = CurrentSellerManager.ShopId; if (query.SettlementEnd.HasValue) { query.SettlementEnd = query.SettlementEnd.Value.AddDays(1); } var orderResults = DistributionApplication.GetBrokerageOrdersAll(query); return(ExcelView("OrdersExport", "商家分销订单业绩", orderResults)); }
public ActionResult Orders(BrokerageOrderQuery query) { query.ShopId = CurrentShop.Id; if (query.SettlementEnd.HasValue) { query.SettlementEnd = query.SettlementEnd.Value.AddDays(1); } var data = DistributionApplication.GetBrokerageOrders(query); return(Json(data, true)); }
public JsonResult <Result <dynamic> > GetShopHeader(long distributorId) { DistributorInfo currentDistributor = DistributionApplication.GetDistributor(distributorId); dynamic result = new System.Dynamic.ExpandoObject(); result.MemberId = currentDistributor.MemberId; result.ShopLogo = currentDistributor.ShopLogo; result.ShopName = currentDistributor.ShopName; result.ShopLogo = Himall.Core.HimallIO.GetRomoteImagePath(result.ShopLogo); result.IsShowLogo = currentDistributor.IsShowShopLogo; return(JsonResult <dynamic>(result)); }
/// <summary> /// 我的佣金 /// </summary> /// <returns></returns> public ActionResult MyBrokerage() { var memberId = CurrentUser.Id; ViewBag.Title = SiteSettings.DistributorRenameMyBrokerage; var model = DistributionApplication.GetDistributorDTO(memberId); model.NoSettlementAmount = DistributionApplication.GetNoSettlementAmount(memberId); ViewBag.Distributor = model; return(View()); }
public JsonResult GetShopOrder(int page = 1) { DistributionBrokerageQuery query = new DistributionBrokerageQuery { PageNo = page, PageSize = 5, DistributorId = CurrentDistributor.MemberId }; var data = DistributionApplication.GetDistributorBrokerageOrderList(query); var result = new { rows = data.Models, total = data.Total }; return(Json(result)); }
/// <summary> /// 保存设置 /// </summary> /// <returns></returns> public JsonResult <Result <bool> > PostSaveShopConfig(PostSaveShopConfigModel model) { CheckUserLogin(); DistributorInfo currentDistributor = DistributionApplication.GetDistributor(CurrentUser.Id); if (string.IsNullOrWhiteSpace(currentDistributor.ShopLogo) && string.IsNullOrWhiteSpace(model.logoUrl)) { return(Json(ErrorResult <bool>("请上传小店logo!"))); } if (string.IsNullOrWhiteSpace(model.shopName)) { return(Json(ErrorResult <bool>("请填写小店名称!"))); } if (model.shopName.Length > 10) { return(Json(ErrorResult <bool>("小店名称不能超过10个字符!"))); } string shoplogo = currentDistributor.ShopLogo; if (!string.IsNullOrWhiteSpace(model.logoUrl)) { //shoplogo = DownloadWxImage(model.logoWXmediaId); shoplogo = model.logoUrl; } if (string.IsNullOrWhiteSpace(shoplogo)) { return(Json(ErrorResult <bool>("请上传小店logo!"))); } var oldname = Path.GetFileName(shoplogo); string ImageDir = string.Empty; if (!string.IsNullOrWhiteSpace(shoplogo)) { //转移图片 string relativeDir = DISTRIBUTOR_LOGO_PATH; Random ra = new Random(); string fileName = DateTime.Now.ToString("yyyyMMddHHmmssffffff") + ra.Next(4) + ".jpg"; if (shoplogo.Replace("\\", "/").Contains("/temp/"))//只有在临时目录中的图片才需要复制 { var de = shoplogo.Substring(shoplogo.LastIndexOf("/temp/")); Core.HimallIO.CopyFile(de, relativeDir + fileName, true); shoplogo = relativeDir + fileName; } //目标地址 else if (shoplogo.Contains("/Storage")) { shoplogo = shoplogo.Substring(shoplogo.LastIndexOf("/Storage")); } } DistributionApplication.UpdateDistributorConfig(currentDistributor.MemberId, shoplogo, model.shopName, model.isShowLogo); return(JsonResult(true)); }
/// <summary> /// 获取小店订单 /// </summary> /// <param name="pageNo"></param> /// <param name="pageSize"></param> /// <returns></returns> public JsonResult <Result <dynamic> > GetShopOrder(int pageNo, int pageSize = 5) { CheckUserLogin(); DistributionBrokerageQuery query = new DistributionBrokerageQuery { PageNo = pageNo, PageSize = pageSize, DistributorId = CurrentUser.Id }; var data = DistributionApplication.GetDistributorBrokerageOrderList(query); var result = new { rows = data.Models, total = data.Total }; return(JsonResult <dynamic>(result)); }
/// <summary> /// 获取分销员信息 /// </summary> /// <param name="openId"></param> /// <returns></returns> public JsonResult <Result <dynamic> > GetDistributor() { CheckUserLogin(); DistributorInfo currentDistributor = DistributionApplication.GetDistributor(CurrentUser.Id); return(JsonResult <dynamic>(new { DistributionIsEnable = SiteSettingApplication.SiteSettings.DistributionIsEnable, IsDistributor = currentDistributor != null, DistributionStatus = currentDistributor == null ? 0 : currentDistributor.DistributionStatus, IsOnlyMember = currentDistributor == null ? true : currentDistributor.IsOnlyMember, Remark = currentDistributor == null ? "" : currentDistributor.Remark })); }
public ActionResult GetRecords(DistributorRecordQuery query) { query.MemberId = CurrentUser.Id; var models = DistributionApplication.GetRecords(query); var list = models.Models.Select(item => new { Type = item.Type.ToDescription(), Time = item.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), Amount = item.Amount.ToString("n2"), item.Remark, }); return(Json(new { success = true, list }, true)); }
/// <summary> /// 提交申请销售员 /// </summary> /// <returns></returns> public JsonResult SaveShopConfig(string logoWXmediaId, string shopname, bool isShowLogo) { if (string.IsNullOrWhiteSpace(CurrentDistributor.ShopLogo) && string.IsNullOrWhiteSpace(logoWXmediaId)) { throw new MallException("请上传小店logo"); } if (string.IsNullOrWhiteSpace(shopname)) { throw new MallException("请填写小店名称"); } if (shopname.Length > 10) { throw new MallException("小店名称不能超过10个字符"); } string shoplogo = CurrentDistributor.ShopLogo; if (!string.IsNullOrWhiteSpace(logoWXmediaId)) { shoplogo = DownloadWxImage(logoWXmediaId); } if (string.IsNullOrWhiteSpace(shoplogo)) { throw new MallException("请上传小店logo"); } var oldname = Path.GetFileName(shoplogo); string ImageDir = string.Empty; if (!string.IsNullOrWhiteSpace(shoplogo)) { //转移图片 string relativeDir = DISTRIBUTOR_LOGO_PATH; Random ra = new Random(); string fileName = DateTime.Now.ToString("yyyyMMddHHmmssffffff") + ra.Next(4) + ".jpg"; if (shoplogo.Replace("\\", "/").Contains("/temp/"))//只有在临时目录中的图片才需要复制 { var de = shoplogo.Substring(shoplogo.LastIndexOf("/temp/")); Core.MallIO.CopyFile(de, relativeDir + fileName, true); shoplogo = relativeDir + fileName; } //目标地址 else if (shoplogo.Contains("/Storage")) { shoplogo = shoplogo.Substring(shoplogo.LastIndexOf("/Storage")); } } DistributionApplication.UpdateDistributorConfig(CurrentDistributor.MemberId, shoplogo, shopname, isShowLogo); return(Json(new Result { success = true, msg = "小店设置修改成功!", code = 21 })); }