protected void Page_Load(object sender, EventArgs e) { string str = base.Request.Form["task"]; if (!string.IsNullOrEmpty(str)) { this.TaskMsg.state = "faild"; this.TaskMsg.msg = "未知错误"; NameValueCollection form = new NameValueCollection(); form.Add(base.Request.Form); FreightTemplate freightTemplate = this.ReadPostData(form); if (this.TaskMsg.state == "success") { if (SettingsHelper.CreateShippingTemplate(freightTemplate)) { this.TaskMsg.msg = "添加成功!"; } else { this.TaskMsg.state = "faild"; if (SettingsHelper.Error != "") { this.TaskMsg.msg = "添加数据失败:" + SettingsHelper.Error; } else { this.TaskMsg.msg = "该运费模板名称已存在,请重新输入运费模板名称!"; } } } base.Response.Write(JsonConvert.SerializeObject(this.TaskMsg)); base.Response.End(); } }
protected void rptypelist_ItemDataBound(object sender, RepeaterItemEventArgs e) { if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem)) { Repeater repeater = e.Item.FindControl("ListShipper") as Repeater; FreightTemplate dataItem = (FreightTemplate)e.Item.DataItem; IList <SpecifyRegionGroup> specifyRegionGroups = SettingsHelper.GetSpecifyRegionGroups(Convert.ToInt32(dataItem.TemplateId)); if (specifyRegionGroups.Count < 1) { SpecifyRegionGroup item = new SpecifyRegionGroup { RegionIds = "", ModeId = 1, FristNumber = 1M, FristPrice = 0M, AddNumber = 1M, AddPrice = 0M, IsDefault = true }; specifyRegionGroups.Add(item); } repeater.DataSource = specifyRegionGroups; repeater.DataBind(); } }
public static FreightTemplate GetFreightTemplate(long templateId, long shopId) { var model = Service.GetFreightTemplate(templateId); if (model.ShopID != shopId) { throw new MallException("此运费模板不存在"); } var freeregions = Service.GetShippingFreeRegions(templateId); // var freightTemplate = AutoMapper.Mapper.Map<FreightTemplate>(model); FreightTemplate freightTemplate = model.Map <FreightTemplate>(); // freightTemplate.FreightArea = AutoMapper.Mapper.Map<List<FreightArea>>(model.FreightAreaContentInfo); freightTemplate.FreightArea = model.FreightAreaContentInfo.Map <List <FreightArea> >(); foreach (var area in freightTemplate.FreightArea) { // area.FreightAreaDetail = AutoMapper.Mapper.Map<List<FreightAreaDetail>>(model.FreightAreaContentInfo.Where(a => a.Id == area.Id).FirstOrDefault().FreightAreaDetailInfo); area.FreightAreaDetail = model.FreightAreaContentInfo.Where(a => a.Id == area.Id).FirstOrDefault().FreightAreaDetailInfo.Map <List <FreightAreaDetail> >(); } freightTemplate.FreeTempContent = new List <FreeTempContent>(); var freeGroups = Service.GetShippingFreeGroups(model.Id); var freeRegions = Service.GetShippingFreeRegions(model.Id); freeGroups.ForEach(item => { var info = new FreeTempContent() { ConditionNumber = item.ConditionNumber, ConditionType = item.ConditionType }; if (!string.IsNullOrWhiteSpace(info.ConditionNumber)) { var condition = info.ConditionNumber.Split('$'); if (condition.Length == 2) { info.ConditionNumber1 = condition[0]; info.ConditionNumber2 = condition[1]; } else if (condition.Length == 1) { info.ConditionNumber1 = condition[0]; } } info.FreightAreaDetail = new List <FreightAreaDetail>(); freeRegions.Where(p => p.GroupId == item.Id).ToList().ForEach(a => { info.FreightAreaDetail.Add(new FreightAreaDetail() { RegionPath = a.RegionPath }); }); freightTemplate.FreeTempContent.Add(info); }); return(freightTemplate); }
/// <summary> /// 获取运费模板列表 /// </summary> /// <param name="appId"></param> /// <returns></returns> public List <FreightDTO> GetFreightListByAppIdExt(Guid appId) { try { var query = (from data in FreightTemplate.ObjectSet() where data.AppId == appId orderby data.SubTime descending select new FreightDTO() { Id = data.Id, Name = data.Name, FreightMethod = data.FreightMethod, FreightTo = data.FreightTo, FirstCount = data.FirstCount, FirstCountPrice = data.FirstCountPrice, NextCount = data.NextCount, NextCountPrice = data.NextCountPrice, IsFreeExp = data.IsFreeExp, SubTime = data.SubTime, ModifiedOn = data.ModifiedOn, PricingMethod = data.PricingMethod, ExpressType = data.ExpressType }).ToList(); return(query); } catch (Exception ex) { LogHelper.Error(string.Format("获取运费模板列表。appId:{0}", appId), ex); return(null); } }
/// <summary> /// 添加修改运费模板 /// </summary> /// <param name="templateInfo"></param> public static void AddOrUpdateFreightTemplate(FreightTemplate templateInfo) { // var freightTemplate = AutoMapper.Mapper.Map<FreightTemplateInfo>(templateInfo); var freightTemplate = templateInfo.Map <FreightTemplateInfo>(); freightTemplate.ShippingFreeGroupInfo = new List <ShippingFreeGroupInfo>(); if (templateInfo.FreeTempContent != null) { templateInfo.FreeTempContent.ForEach(p => { var info = new Mall.Entities.ShippingFreeGroupInfo() { ConditionNumber = p.ConditionNumber, ConditionType = p.ConditionType }; info.ShippingFreeRegionInfo = new List <Mall.Entities.ShippingFreeRegionInfo>(); p.FreightAreaDetail.ForEach(a => { info.ShippingFreeRegionInfo.Add(new Mall.Entities.ShippingFreeRegionInfo() { RegionId = a.RegionId, //保留最后一级地址ID RegionPath = a.RegionPath //保留地址全路径方便查询 }); }); freightTemplate.ShippingFreeGroupInfo.Add(info); }); } Service.UpdateFreightTemplate(freightTemplate); }
protected void Page_Load(object sender, System.EventArgs e) { string value = base.Request.Form["task"]; if (!string.IsNullOrEmpty(value)) { this.TaskMsg.state = "faild"; this.TaskMsg.msg = "未知错误"; FreightTemplate freightTemplate = this.ReadPostData(new System.Collections.Specialized.NameValueCollection { base.Request.Form }); if (this.TaskMsg.state == "success") { if (SettingsHelper.CreateShippingTemplate(freightTemplate)) { this.TaskMsg.msg = "添加成功!"; } else { this.TaskMsg.state = "faild"; this.TaskMsg.msg = "添加数据失败:" + SettingsHelper.Error; } } base.Response.Write(JsonConvert.SerializeObject(this.TaskMsg)); base.Response.End(); } }
protected void rptypelist_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e) { if (e.Item.ItemType == System.Web.UI.WebControls.ListItemType.Item || e.Item.ItemType == System.Web.UI.WebControls.ListItemType.AlternatingItem) { System.Web.UI.WebControls.Repeater repeater = e.Item.FindControl("ListShipper") as System.Web.UI.WebControls.Repeater; FreightTemplate freightTemplate = (FreightTemplate)e.Item.DataItem; int templateId = System.Convert.ToInt32(freightTemplate.TemplateId); System.Collections.Generic.IList <SpecifyRegionGroup> specifyRegionGroups = SettingsHelper.GetSpecifyRegionGroups(templateId); if (specifyRegionGroups.Count < 1) { specifyRegionGroups.Add(new SpecifyRegionGroup { RegionIds = "", ModeId = 1, FristNumber = 1m, FristPrice = 0m, AddNumber = 1m, AddPrice = 0m, IsDefault = true }); } repeater.DataSource = specifyRegionGroups; repeater.DataBind(); } }
/// <summary> /// 获取运费模板列表 /// </summary> /// <param name="appId">应用ID</param> /// <param name="pageIndex">查询第几页的数据</param> /// <param name="pageSize">每页查询几条数据</param> /// <returns></returns> public List <FreightDTO> GetFreightTemplateListByAppIdExt(Guid appId, int pageIndex, int pageSize, out int rowCount) { try { var query = from data in FreightTemplate.ObjectSet() where data.AppId == appId orderby data.SubTime descending select data; rowCount = query != null?query.Count() : 0; var fTemplateDTOList = query.Skip((pageIndex - 1) * pageSize).Take(pageSize).Select(data => new FreightDTO { Id = data.Id, Name = data.Name, FreightMethod = data.FreightMethod, FreightTo = data.FreightTo, FirstCount = data.FirstCount, FirstCountPrice = data.FirstCountPrice, NextCount = data.NextCount, NextCountPrice = data.NextCountPrice, IsFreeExp = data.IsFreeExp, SubTime = data.SubTime, ModifiedOn = data.ModifiedOn, AppId = data.AppId, PricingMethod = data.PricingMethod, ExpressType = data.ExpressType }).ToList(); var list = (from data in fTemplateDTOList select new FreightDTO() { Id = data.Id, Name = data.Name, FreightMethod = data.FreightMethod, FreightTo = data.FreightTo, FirstCount = data.FirstCount, FirstCountPrice = data.FirstCountPrice, NextCount = data.NextCount, NextCountPrice = data.NextCountPrice, IsFreeExp = data.IsFreeExp, SubTime = data.SubTime, ModifiedOn = data.ModifiedOn, AppId = data.AppId, PricingMethod = data.PricingMethod, ExpressType = data.ExpressType, FreightDetailList = GetFreightTemplateDetailListByTemId(data.Id) }).ToList(); ComputeFreightRangeDTOs(list); return(list); } catch (Exception ex) { LogHelper.Error(string.Format("获取运费模板列表。appId:{0},pageIndex:{1},pageSize:{2}", appId, pageIndex, pageSize), ex); rowCount = 0; return(null); } }
public static bool UpdateShippingTemplate(FreightTemplate freightTemplate) { ShippingModeDao shippingModeDao = new ShippingModeDao(); bool result = shippingModeDao.UpdateShippingTemplate(freightTemplate); SettingsHelper.Error = shippingModeDao.Error; return(result); }
public static bool CreateShippingTemplate(FreightTemplate freightTemplate) { ShippingModeDao shippingModeDao = new ShippingModeDao(); bool flag = shippingModeDao.CreateShippingTemplate(freightTemplate); SettingsHelper.Error = shippingModeDao.Error; return(flag); }
public static bool UpdateShippingTemplate(FreightTemplate freightTemplate, string templateName) { ShippingModeDao shippingModeDao = new ShippingModeDao(); bool flag = shippingModeDao.UpdateShippingTemplate(freightTemplate, templateName); SettingsHelper.Error = shippingModeDao.Error; return(flag); }
public static bool UpdateShippingTemplate(FreightTemplate freightTemplate) { ShippingModeDao dao = new ShippingModeDao(); bool flag = dao.UpdateShippingTemplate(freightTemplate); Error = dao.Error; return(flag); }
/// <summary> /// 运费模板管理 /// </summary> /// <param name="user"></param> /// <param name="entity"></param> /// <param name="FRegions"></param> /// <returns></returns> public JsonResult DoFreightTemplateForm(SysUser user, [FromBody] dynamic entity) { FreightTemplate fTemplate = JsonConvert.DeserializeObject <FreightTemplate>(entity.entity.ToString()); List <FreightRegion> FRegions = JsonConvert.DeserializeObject <List <FreightRegion> >(entity.FRegions.ToString()); StateCode code = ServiceIoc.Get <FreightTemplateService>().Save(user.id, fTemplate, FRegions); return(Json(GetResult(code))); }
/// <summary> /// 保存运费及其明细 /// </summary> /// <param name="freight">运费模板</param> /// <param name="freightDetailList">运费明细集合</param> /// <returns></returns> public ResultDTO AddFreightAndFreightDetailExt(FreightTemplateDTO freight, List <FreightTemplateDetailDTO> freightDetailList) { try { if (freight == null) { return(new ResultDTO { ResultCode = 2, Message = "运费模板为null" }); } ContextSession contextSession = ContextFactory.CurrentThreadContext; FreightTemplate tem = new FreightTemplate(); Guid ID = Guid.NewGuid(); tem.Id = ID; tem.Name = freight.Name; tem.FreightMethod = freight.FreightMethod; tem.FreightTo = freight.FreightTo; tem.FirstCount = freight.FirstCount; tem.FirstCountPrice = freight.FirstCountPrice; tem.NextCount = freight.NextCount; tem.NextCountPrice = freight.NextCountPrice; tem.IsFreeExp = freight.IsFreeExp; tem.AppId = freight.AppId; tem.SubTime = DateTime.Now; tem.ModifiedOn = DateTime.Now; tem.EntityState = System.Data.EntityState.Added; contextSession.SaveObject(tem); if (freightDetailList != null && freightDetailList.Count > 0) { FreightTemplateDetail ftDetail; foreach (FreightTemplateDetailDTO detail in freightDetailList) { ftDetail = new FreightTemplateDetail(); ftDetail.Id = Guid.NewGuid(); ftDetail.FreightTemplateId = ID; ftDetail.FreightTo = detail.FreightTo; ftDetail.FirstCount = detail.FirstCount; ftDetail.FirstCountPrice = detail.FirstCountPrice; ftDetail.NextCount = detail.NextCount; ftDetail.NextCountPrice = detail.NextCountPrice; ftDetail.EntityState = System.Data.EntityState.Added; contextSession.SaveObject(ftDetail); } } contextSession.SaveChanges(); return(new ResultDTO { ResultCode = 0, Message = ID.ToString() }); } catch (Exception ex) { LogHelper.Error(string.Format("保存运费及其明细服务异常。freight:{0},freightDetailList:{1}", JsonHelper.JsonSerializer(freight), JsonHelper.JsonSerializer(freightDetailList)), ex); return(new ResultDTO { ResultCode = 1, Message = ex.Message }); } }
protected void Page_Load(object sender, System.EventArgs e) { this.TemplateId = base.Request["TemplateId"]; this.SName = base.Request["TemplateName"]; if (string.IsNullOrEmpty(this.TemplateId)) { this.ShowMsg("读取数据异常,无法编辑", false); return; } string text = base.Request["task"]; if (!string.IsNullOrEmpty(text)) { if (text == "ReadData") { FreightTemplate freightTemplate = SettingsHelper.GetFreightTemplate(int.Parse(this.TemplateId), true); base.Response.ContentType = "text/json"; base.Response.Write(JsonConvert.SerializeObject(freightTemplate)); base.Response.End(); return; } if (text == "EditSave") { this.TaskMsg.state = "faild"; this.TaskMsg.msg = "未知错误"; FreightTemplate freightTemplate2 = this.ReadPostData(new System.Collections.Specialized.NameValueCollection { base.Request.Form }); if (this.TaskMsg.state == "success") { string templateName = base.Request.Form["sName"]; if (SettingsHelper.UpdateShippingTemplate(freightTemplate2, templateName)) { this.TaskMsg.msg = "模板修改成功!"; } else { this.TaskMsg.state = "faild"; if (SettingsHelper.Error != "") { this.TaskMsg.msg = "模板修改失败:" + SettingsHelper.Error; } else { this.TaskMsg.msg = "该模板名称已存在,请重新输入名称!"; } } } base.Response.Write(JsonConvert.SerializeObject(this.TaskMsg)); base.Response.End(); } } }
/// <summary> /// 运费模板管理 /// </summary> /// <param name="user"></param> /// <returns></returns> public IActionResult FreightTemplateForm(SysUser user) { FreightTemplate entity = ServiceIoc.Get <FreightTemplateService>().GetById(bid); if (entity != null) { //运费模板对象 ViewBag.entity = JsonConvert.SerializeObject(entity); ViewBag.FRegions = ServiceIoc.Get <FreightRegionService>().GetList("where freight_template_id = @0", bid); } return(View()); }
/// <summary> /// 仅更新区间运费模板 /// </summary> /// <param name="inputDTO"></param> private void OnlyUpdateRangeFreightTemplate(Deploy.CustomDTO.RangeFreightTemplateInputDTO inputDTO) { if (inputDTO == null) { throw new ArgumentNullException("inputDTO"); } if (inputDTO.TemplateId == Guid.Empty) { throw new ArgumentException("inputDTO.TemplateId"); } var templateId = inputDTO.TemplateId; var template = FreightTemplate.ObjectSet().FirstOrDefault(predicate => predicate.Id == templateId); if (template == null) { throw new Exception(string.Format("未找到运费模板对象 FreightTemplateId: {0}", templateId)); } template.Name = inputDTO.Name; template.IsFreeExp = inputDTO.FreeExpress; template.ModifiedId = base.ContextDTO.LoginUserID; FreightRangeDetails.ObjectSet() .Where(predicate => predicate.TemplateId == templateId) .ToList() .ForEach(freight => freight.EntityState = System.Data.EntityState.Deleted); var context = ContextFactory.CurrentThreadContext; foreach (var group in inputDTO.Freights.GroupBy(selector => selector.IsSpecific)) { foreach (var freight in group) { var detail = FreightRangeDetails.CreateFreightRangeDetails(); detail.TemplateId = template.Id; detail.ProvinceCodes = freight.ProvinceCodes; detail.IsSpecific = freight.IsSpecific; detail.Min = freight.Min; detail.Max = freight.Max; detail.Cost = freight.Cost; context.SaveObject(detail); } } context.SaveObject(template); context.SaveChange(); }
public FreightTemplate GetTemplateMessage(int TemplateId) { if (TemplateId <= 0) { return(null); } FreightTemplate template = null; DbCommand sqlStringCommand = this.database.GetSqlStringCommand(string.Format("SELECT * FROM Hishop_FreightTemplate_Templates where TemplateId={0}", TemplateId)); using (IDataReader reader = this.database.ExecuteReader(sqlStringCommand)) { if (reader.Read()) { template = DataMapper.PopulateTemplateMessage(reader); } } return(template); }
protected void Page_Load(object sender, EventArgs e) { this.TemplateId = base.Request["TemplateId"]; if (string.IsNullOrEmpty(this.TemplateId)) { this.ShowMsg("读取数据异常,无法编辑", false); } else { string str = base.Request["task"]; if (!string.IsNullOrEmpty(str)) { if (str == "ReadData") { FreightTemplate freightTemplate = SettingsHelper.GetFreightTemplate(int.Parse(this.TemplateId), true); base.Response.ContentType = "text/json"; base.Response.Write(JsonConvert.SerializeObject(freightTemplate)); base.Response.End(); } else if (str == "EditSave") { this.TaskMsg.state = "faild"; this.TaskMsg.msg = "未知错误"; NameValueCollection form = new NameValueCollection(); form.Add(base.Request.Form); FreightTemplate template2 = this.ReadPostData(form); if (this.TaskMsg.state == "success") { if (SettingsHelper.UpdateShippingTemplate(template2)) { this.TaskMsg.msg = "模板修改成功!"; } else { this.TaskMsg.state = "faild"; this.TaskMsg.msg = "模板修改失败:" + SettingsHelper.Error; } } base.Response.Write(JsonConvert.SerializeObject(this.TaskMsg)); base.Response.End(); } } } }
public static FreightTemplate PopulateTemplateMessage(IDataReader reader) { if (reader == null) { return(null); } FreightTemplate template = new FreightTemplate { FreeShip = (bool)reader["FreeShip"], HasFree = (bool)reader["HasFree"] }; if (DBNull.Value != reader["MUnit"]) { template.MUnit = int.Parse(reader["MUnit"].ToString()); } template.Name = (string)reader["Name"]; template.TemplateId = (int)reader["TemplateId"]; return(template); }
/// <summary> /// 删除运费模板 /// </summary> /// <param name="Id"></param> /// <returns></returns> public ResultDTO DeleteFreightExt(Guid Id) { try { ContextSession contextSession = ContextFactory.CurrentThreadContext; var query = FreightTemplateDetail.ObjectSet().Where(s => s.FreightTemplateId == Id).ToList(); if (query != null && query.Count > 0) { foreach (FreightTemplateDetail detail in query) { detail.EntityState = System.Data.EntityState.Deleted; contextSession.Delete(detail); } } var fpfQuery = FreightPartialFree.ObjectSet().Where(fpf => fpf.FreightTemplateId == Id); if (fpfQuery.Any()) { foreach (FreightPartialFree partialFree in fpfQuery) { partialFree.EntityState = System.Data.EntityState.Deleted; contextSession.Delete(partialFree); } } FreightTemplate tem = FreightTemplate.ObjectSet().Where(s => s.Id == Id).FirstOrDefault(); if (tem != null) { tem.EntityState = System.Data.EntityState.Deleted; contextSession.Delete(tem); } contextSession.SaveChanges(); return(new ResultDTO { ResultCode = 0, Message = "Success" }); } catch (Exception ex) { LogHelper.Error(string.Format("删除运费模板服务异常。Id:{0}", Id), ex); return(new ResultDTO { ResultCode = 1, Message = ex.Message }); } }
/// <summary> /// 仅创建区间运费模板 /// </summary> /// <param name="inputDTO"></param> private void OnlyCreateRangeFreightTemplate(Deploy.CustomDTO.RangeFreightTemplateInputDTO inputDTO) { var context = ContextFactory.CurrentThreadContext; var template = FreightTemplate.CreateFreightTemplate(); template.AppId = inputDTO.AppId; template.SubId = base.ContextDTO.LoginUserID; template.Name = inputDTO.Name; template.IsFreeExp = inputDTO.FreeExpress; template.PricingMethod = 3; //按区间计价 template.SubTime = DateTime.Now; template.ExpressType = 0; template.FreightMethod = 0; template.FreightTo = ""; template.FirstCount = 0M; template.FirstCountPrice = 0M; template.NextCount = 0M; template.NextCountPrice = 0M; template.ModifiedOn = DateTime.Now; template.IsDefault = 0; context.SaveObject(template); foreach (var freight in inputDTO.Freights) { var detail = FreightRangeDetails.CreateFreightRangeDetails(); detail.TemplateId = template.Id; detail.ProvinceCodes = freight.ProvinceCodes; detail.IsSpecific = !string.IsNullOrEmpty(freight.ProvinceCodes); detail.Min = freight.Min; detail.Max = freight.Max; detail.Cost = freight.Cost; context.SaveObject(detail); } context.SaveChanges(); }
public FreightTemplate GetTemplateMessage(int TemplateId) { FreightTemplate result; if (TemplateId <= 0) { result = null; } else { FreightTemplate freightTemplate = null; System.Data.Common.DbCommand sqlStringCommand = this.database.GetSqlStringCommand(string.Format("SELECT * FROM Hishop_FreightTemplate_Templates where TemplateId={0}", TemplateId)); using (System.Data.IDataReader dataReader = this.database.ExecuteReader(sqlStringCommand)) { if (dataReader.Read()) { freightTemplate = DataMapper.PopulateTemplateMessage(dataReader); } } result = freightTemplate; } return(result); }
/// <summary> /// 根据重量生成配送方式 /// 默认配送方式 /// </summary> /// <param name="orderProducts"></param> /// <param name="shippingAddressID"></param> /// <returns></returns> public StateCode GetDefaultFreight(List <JsonOrderProduct> orderProducts, long shippingAddressID, out string result) { result = ""; using (ISession s = SessionFactory.Instance.CreateSession()) { //用户收货地址 ShoppingAddress shippingAddress = s.Get <ShoppingAddress>(shippingAddressID); if (shippingAddress == null) { return(StateCode.State_252); } //配送方式实体类 DeliveryMode mode = s.Get <DeliveryMode>("where is_default = @0", true); if (mode == null) { return(StateCode.State_251); } decimal price = 0, first_price = 0, add_price = 0; long weight = 0; foreach (JsonOrderProduct jop in orderProducts) { Product pdt = s.Get <Product>(new string[] { "id", "is_postage" }, "where id = @0", jop.product_id); //排除包邮商品 if (pdt != null && !pdt.is_postage) { ProductSku sku = s.Get <ProductSku>("where dbo.fn_check_specset(specset,@0) = 1 and product_id = @1", jop.specset ?? "", jop.product_id); weight += sku.weight * jop.qty; } } //获取当前配送方式运费模板 FreightTemplate fTemplate = s.Get <FreightTemplate>(mode.freight_template_id); if (fTemplate != null && weight > 0) { //默认首重价格 first_price = fTemplate.default_first_price; //默认续重价格 add_price = fTemplate.default_add_price; //特殊地区按特殊地区价格算 FreightRegion fRegion = s.Get <FreightRegion>("where region_name like '%'+@0+'%' and freight_template_id = @1 ", shippingAddress.province, fTemplate.id); if (fRegion != null) { if (weight < fRegion.first_weight) { price = fRegion.first_price; } else { decimal t = (((weight - fRegion.first_weight) / fRegion.add_weight) + (((weight - fRegion.first_weight) % fRegion.add_weight) == 0 ? 0 : 1)) * fRegion.add_price; price = weight <= fRegion.first_weight ? fRegion.first_price : t + fRegion.first_price; } } else { if (weight < fTemplate.first_weight) { price = fTemplate.default_first_price; } else { decimal tmp = (((weight - fTemplate.first_weight) / fTemplate.add_weight) + (((weight - fTemplate.first_weight) % fTemplate.add_weight) == 0 ? 0 : 1)) * add_price; price = weight <= fTemplate.first_weight ? first_price : Math.Ceiling((decimal)(weight - fTemplate.first_weight) / (decimal)fTemplate.add_weight) * add_price + first_price; } } } result = mode.id + "#" + price; return(StateCode.State_200); } }
public FreightTemplate GetFreightTemplate(int templateId, bool includeDetail) { FreightTemplate freightTemplate = new FreightTemplate(); System.Data.Common.DbCommand sqlStringCommand = this.database.GetSqlStringCommand(" SELECT * FROM Hishop_FreightTemplate_Templates Where TemplateId =@TemplateId"); if (includeDetail) { System.Data.Common.DbCommand expr_24 = sqlStringCommand; expr_24.CommandText += " SELECT * FROM Hishop_FreightTemplate_FreeShipping g,vw_Hishop_FreightTemplate_FreeShippingRegions r Where g.FreeId=r.FreeId and TemplateId =@TemplateId"; System.Data.Common.DbCommand expr_3B = sqlStringCommand; expr_3B.CommandText += " SELECT g.*,r.RegionIds FROM Hishop_FreightTemplate_SpecifyRegionGroups g LEFT JOIN vw_Hishop_FreightTemplate_SpecifyRegions r on (g.GroupId=r.GroupId) where g.TemplateId =@TemplateId"; } this.database.AddInParameter(sqlStringCommand, "TemplateId", System.Data.DbType.Int32, templateId); using (System.Data.IDataReader dataReader = this.database.ExecuteReader(sqlStringCommand)) { if (dataReader.Read()) { if (dataReader["TemplateId"] != DBNull.Value) { freightTemplate.TemplateId = (int)dataReader["TemplateId"]; } freightTemplate.Name = (string)dataReader["Name"]; freightTemplate.FreeShip = (bool)dataReader["FreeShip"]; freightTemplate.HasFree = (bool)dataReader["HasFree"]; freightTemplate.MUnit = (int)((byte)dataReader["MUnit"]); } if (includeDetail) { dataReader.NextResult(); freightTemplate.FreeShippings = new List <FreeShipping>(); while (dataReader.Read()) { FreeShipping freeShipping = new FreeShipping(); freeShipping.TemplateId = (int)dataReader["TemplateId"]; freeShipping.ModeId = (int)((byte)dataReader["ModeId"]); freeShipping.FreeId = (int)((decimal)dataReader["FreeId"]); freeShipping.ConditionNumber = (string)dataReader["ConditionNumber"]; freeShipping.ConditionType = (int)((byte)dataReader["ConditionType"]); freeShipping.RegionIds = (string)dataReader["RegionIds"]; freightTemplate.FreeShippings.Add(freeShipping); } dataReader.NextResult(); freightTemplate.SpecifyRegionGroups = new List <SpecifyRegionGroup>(); while (dataReader.Read()) { SpecifyRegionGroup specifyRegionGroup = new SpecifyRegionGroup(); specifyRegionGroup.TemplateId = (int)dataReader["TemplateId"]; specifyRegionGroup.GroupId = (int)dataReader["GroupId"]; specifyRegionGroup.FristNumber = (decimal)dataReader["FristNumber"]; specifyRegionGroup.FristPrice = (decimal)dataReader["FristPrice"]; specifyRegionGroup.AddNumber = (decimal)dataReader["AddNumber"]; specifyRegionGroup.AddPrice = (decimal)dataReader["AddPrice"]; specifyRegionGroup.ModeId = (int)((byte)dataReader["ModeId"]); specifyRegionGroup.IsDefault = (bool)dataReader["IsDefault"]; string regionIds = ""; if (DBNull.Value != dataReader["RegionIds"]) { regionIds = (string)dataReader["RegionIds"]; } specifyRegionGroup.RegionIds = regionIds; freightTemplate.SpecifyRegionGroups.Add(specifyRegionGroup); } } } return(freightTemplate); }
private FreightTemplate ReadPostData(NameValueCollection Form) { string str = ""; FreightTemplate template = new FreightTemplate(); try { this.TaskMsg.msg = ""; template.Name = Form["Name"]; template.TemplateId = int.Parse(Form["TemplateId"]); if (!string.IsNullOrEmpty(template.Name)) { template.MUnit = int.Parse(Form["MUnit"]); if (int.Parse(Form["FreeShip"]) == 0) { template.FreeShip = false; } else { template.FreeShip = true; } if (!template.FreeShip) { ValidationResults results; if (int.Parse(Form["HasFree"]) == 0) { template.HasFree = false; } else { template.HasFree = true; int num = 0; template.FreeShippings = new List <FreeShipping>(); while (!string.IsNullOrEmpty(Form["freeShippings[" + num + "][ModelId]"]) && (this.TaskMsg.msg == "")) { FreeShipping target = new FreeShipping { ModeId = int.Parse(Form["freeShippings[" + num + "][ModelId]"]), ConditionType = int.Parse(Form["freeShippings[" + num + "][ConditionType]"]), ConditionNumber = Form["freeShippings[" + num + "][ConditionNumber]"] }; string str2 = Form["freeShippings[" + num + "][FreeRegions]"]; if (!string.IsNullOrEmpty(str2)) { string[] strArray = str2.Split(new char[] { ',' }); if (strArray.Length > 0) { target.FreeShippingRegions = new List <FreeShippingRegion>(); foreach (string str3 in strArray) { int num2 = 0; if (int.TryParse(str3, out num2) && (num2 != 0)) { FreeShippingRegion item = new FreeShippingRegion { RegionId = num2 }; target.FreeShippingRegions.Add(item); } } } } results = Hishop.Components.Validation.Validation.Validate <FreeShipping>(target, new string[] { "ValFree" }); str = ""; if (!results.IsValid) { foreach (ValidationResult result in (IEnumerable <ValidationResult>)results) { str = str + result.Message; } this.TaskMsg.msg = str; } template.FreeShippings.Add(target); num++; } } int num3 = 0; if (!string.IsNullOrEmpty(Form["shipperSelect[" + num3 + "][ModelId]"]) && (this.TaskMsg.msg == "")) { template.SpecifyRegionGroups = new List <SpecifyRegionGroup>(); while (!string.IsNullOrEmpty(Form["shipperSelect[" + num3 + "][ModelId]"]) && (this.TaskMsg.msg == "")) { SpecifyRegionGroup group = new SpecifyRegionGroup { ModeId = int.Parse(Form["shipperSelect[" + num3 + "][ModelId]"]), FristPrice = decimal.Parse(Form["shipperSelect[" + num3 + "][FristPrice]"]), AddNumber = decimal.Parse(Form["shipperSelect[" + num3 + "][AddNumber]"]), FristNumber = decimal.Parse(Form["shipperSelect[" + num3 + "][FristNumber]"]), AddPrice = decimal.Parse(Form["shipperSelect[" + num3 + "][AddPrice]"]), IsDefault = false }; if (int.Parse(Form["shipperSelect[" + num3 + "][IsDefault]"]) == 1) { group.IsDefault = true; } string str4 = Form["shipperSelect[" + num3 + "][SpecifyRegions]"]; if (!string.IsNullOrEmpty(str4)) { string[] strArray2 = str4.Split(new char[] { ',' }); if (strArray2.Length > 0) { group.SpecifyRegions = new List <SpecifyRegion>(); foreach (string str5 in strArray2) { int num4 = 0; if (int.TryParse(str5, out num4) && (num4 != 0)) { SpecifyRegion region2 = new SpecifyRegion { RegionId = num4 }; group.SpecifyRegions.Add(region2); } } } } results = Hishop.Components.Validation.Validation.Validate <SpecifyRegionGroup>(group, new string[] { "ValRegionGroup" }); str = ""; if (!results.IsValid) { foreach (ValidationResult result2 in (IEnumerable <ValidationResult>)results) { str = str + result2.Message; } this.TaskMsg.msg = str; } template.SpecifyRegionGroups.Add(group); num3++; } } else { this.TaskMsg.msg = "没有运送方式选择"; } } else { template.HasFree = false; } } else { this.TaskMsg.msg = "模板名称不能为空"; } if (this.TaskMsg.msg == "") { this.TaskMsg.state = "success"; return(template); } this.TaskMsg.state = "faild"; } catch (Exception exception) { this.TaskMsg.msg = "参数异常:" + exception.Message.ToString(); } return(template); }
/// <summary> /// 保存运费模板 /// </summary> /// <param name="user"></param> /// <param name="entity"></param> /// <param name="FTRegions"></param> /// <param name="FRegions"></param> /// <returns></returns> public JsonResult SaveFreightTemplate(SysUser user, FreightTemplate entity, List <FreightRegion> FRegions) { StateCode code = ServiceIoc.Get <FreightTemplateService>().Save(user.id, entity, FRegions); return(Json(GetResult(code))); }
/// <summary> /// 添加修改运费模板 /// </summary> /// <param name="templateInfo"></param> public static void AddOrUpdateFreightTemplate(FreightTemplate templateInfo) { var freightTemplate = AutoMapper.Mapper.Map <Himall.Model.FreightTemplateInfo>(templateInfo); _iFreightTemplateService.UpdateFreightTemplate(freightTemplate); }
/// <summary> /// 根据重量生成配送方式(集合) /// </summary> /// <param name="orderProducts"></param> /// <param name="ShippingAddressID"></param> /// <returns></returns> public Dictionary <long, string> GenerateDeliveryModes(List <JsonOrderProduct> orderProducts, long ShippingAddressID) { using (ISession s = SessionFactory.Instance.CreateSession()) { //用户收货地址 ShoppingAddress shippingAddress = s.Get <ShoppingAddress>(ShippingAddressID); if (shippingAddress == null) { throw new Exception("不存在该用户收货地址"); } int weight = 0; foreach (JsonOrderProduct jop in orderProducts) { ProductSku sku = s.Get <ProductSku>("where dbo.fn_check_specset(specset,@0) = 1 and product_id = @1", (jop.specset ?? ""), jop.product_id); weight += sku.weight * jop.qty; } //配送方式实体类 List <DeliveryMode> modes = s.List <DeliveryMode>("", ""); //配送方式以及运费集合 Dictionary <long, string> deliveryMode = new Dictionary <long, string>(); decimal price = 0, first_price = 0, add_price = 0; foreach (DeliveryMode m in modes) { //获取当前配送方式运费模板 FreightTemplate fTemplate = s.Get <FreightTemplate>(m.freight_template_id); if (fTemplate != null) { //默认首重价格 first_price = fTemplate.default_first_price; //默认续重价格 add_price = fTemplate.default_add_price; //特殊地区按特殊地区价格算 FreightRegion fRegion = s.Get <FreightRegion>("where region_name like '%'+@0+'%' and freight_template_id = @1 ", shippingAddress.province, fTemplate.id); if (fRegion != null) { if (weight < fRegion.first_weight) { price = fRegion.first_price; } else { decimal t = (((weight - fRegion.first_weight) / fRegion.add_weight) + ((weight - fRegion.first_weight) % fRegion.add_weight) == 0 ? 0 : 1) * fRegion.add_price; price = weight <= fRegion.first_weight ? fRegion.first_price : t + fRegion.first_price; } } else { if (weight < fTemplate.first_weight) { price = fTemplate.default_first_price; } else { decimal tmp = (((weight - fTemplate.first_weight) / fTemplate.add_weight) + ((weight - fTemplate.first_weight) % fTemplate.add_weight) == 0 ? 0 : 1) * add_price; price = weight <= fTemplate.first_weight ? first_price : Math.Ceiling((decimal)(weight - fTemplate.first_weight) / (decimal)fTemplate.add_weight) * add_price + first_price; } } deliveryMode.Add(m.id, string.Format("{0}: {1}", m.name, price.ToString("f2"))); } } return(deliveryMode); } }
/// <summary> /// 根据重量生成配送方式(最小运费) /// </summary> /// <param name="orderProducts"></param> /// <param name="shippingAddressID"></param> /// <returns></returns> public string GetDeliveryModeFreight(List <JsonOrderProduct> orderProducts, long shippingAddressID) { using (ISession s = SessionFactory.Instance.CreateSession()) { //用户收货地址 ShoppingAddress shippingAddress = s.Get <ShoppingAddress>(shippingAddressID); if (shippingAddress == null) { throw new Exception("不存在该用户收货地址"); } decimal price = 0, first_price = 0, add_price = 0; decimal pricetmp = 0; long defaultModeID = 0, modeID = 0, weight = 0; foreach (JsonOrderProduct jop in orderProducts) { Product pdt = s.Get <Product>(jop.product_id); //排除包邮商品 if (pdt != null && !pdt.is_postage) { ProductSku sku = s.Get <ProductSku>("where dbo.fn_check_specset(specset,@0) = 1 and product_id = @1", jop.specset ?? "", jop.product_id); weight += sku.weight * jop.qty; } } //配送方式实体类 List <DeliveryMode> modes = s.List <DeliveryMode>("", ""); foreach (DeliveryMode m in modes) { //记录当前配送方式ID modeID = m.id; //获取当前配送方式运费模板 FreightTemplate fTemplate = s.Get <FreightTemplate>(m.freight_template_id); if (fTemplate != null) { //默认首重价格 first_price = fTemplate.default_first_price; //默认续重价格 add_price = fTemplate.default_add_price; //获取特殊区域 FreightRegion fRegion = s.Get <FreightRegion>("where region_name like '%'+@0+'%' and freight_template_id = @1 ", shippingAddress.province, fTemplate.id); if (fRegion != null) { if (weight < fRegion.first_weight) { pricetmp = fRegion.first_price; } else { decimal t = (((weight - fRegion.first_weight) / fRegion.add_weight) + ((weight - fRegion.first_weight) % fRegion.add_weight) == 0 ? 0 : 1) * fRegion.add_price; pricetmp = weight <= fRegion.first_weight ? fRegion.first_price : t + fRegion.first_price; } } if (weight < fTemplate.first_weight) { price = fTemplate.default_first_price; } else { decimal tmp = (((weight - fTemplate.first_weight) / fTemplate.add_weight) + ((weight - fTemplate.first_weight) % fTemplate.add_weight) == 0 ? 0 : 1) * add_price; price = weight <= fTemplate.first_weight ? first_price : Math.Ceiling((decimal)(weight - fTemplate.first_weight) / (decimal)fTemplate.add_weight) * add_price + first_price; } //最小价格 if (price < pricetmp) { pricetmp = price; defaultModeID = m.id; } } } defaultModeID = defaultModeID == 0 ? modeID : defaultModeID; price = price < pricetmp ? price : pricetmp == 0 ? price : pricetmp; return(defaultModeID + "#" + (int)price); } }