public void UpdateIntegralCountByConsumption(IntegralCount orginalInfo, IntegralCount info) { bool isUseSurplus = orginalInfo.IntegralSurplus - Math.Abs(info.Integral) > 0; string sql = @"UPDATE T_IntegralCount SET IntegralCount = IntegralCount+" + info.Integral + " ,IntegralSurplus=IntegralSurplus+" + (isUseSurplus ? info.Integral : (0 - orginalInfo.IntegralSurplus)) + ",IntegralNotDeduct=IntegralNotDeduct+" + (isUseSurplus ? 0 : (info.Integral + orginalInfo.IntegralSurplus)) + " WHERE CompnayId ='" + info.CompnayId + "'"; ExecuteNonQuery(sql); }
private static void FirstInsertIntegral(Guid companyId, IReposity reposity) { IntegralParameterView prameter = reposity.GetIntegralParameter(); if (prameter.IsSignIn) { IntegralInfo integral = new IntegralInfo { CompnayId = companyId, AccessTime = DateTime.Now, Integral = prameter.SignIntegral, IntegralWay = IntegralWay.SignIn, Remark = "登录奖励" }; reposity.InsertIntegralInfo(integral); IntegralCount counts = reposity.GetIntegralCount(companyId); IntegralCount count = new IntegralCount { CompnayId = companyId, Integral = prameter.SignIntegral }; if (counts == null) { count.Integral = prameter.SignIntegral; reposity.InsertIntegralCount(count); } else { reposity.UpdateIntegralCount(count); } } }
private static void NotSignIn(string username, DateTime?lastTime, DateTime logonTime, Guid companyId, IReposity reposity) { IntegralParameterView parameter = reposity.GetIntegralParameter(); if (lastTime != null && lastTime.Value.Date != logonTime.AddDays(-1).Date) { IntegralCount counts = reposity.GetIntegralCount(companyId); if (parameter.IsDrop) { if (counts == null) { var count = new IntegralCount { CompnayId = companyId, Integral = 0 }; reposity.InsertIntegralCount(count); } else { TimeSpan day = logonTime.AddDays(-1).Date - lastTime.Value.Date; IntegralConsumption view = new IntegralConsumption { CompnayId = companyId, AccountName = username, AccountNo = "", AccountPhone = "", DeliveryAddress = "", CommodityCount = 0, CommodityId = Guid.Empty, CommodityName = "", ConsumptionIntegral = parameter.SignIntegral, Exchange = ExchangeState.Processing, ExchangeTiem = lastTime.Value.Date, ExpressCompany = "", ExpressDelivery = "", Reason = "", Remark = "未登录减少积分", Way = IntegralWay.NotSignIn }; int days = parameter.SignIntegral * day.Days < counts.IntegralSurplus ? day.Days : (int)Math.Ceiling(Convert.ToDouble(counts.IntegralSurplus) / Convert.ToDouble(parameter.SignIntegral)); reposity.InsertIntegralConsumption(view, days, parameter.SignIntegral, counts.IntegralSurplus); var count = new IntegralCount { CompnayId = companyId, Integral = -(parameter.SignIntegral * day.Days >= counts.IntegralSurplus ? counts.IntegralSurplus : parameter.SignIntegral * day.Days) }; reposity.UpdateIntegralCount(count); } } } }
protected void btnSave_Click(object sender, EventArgs e) { try { IntegralParameterView paraemter = IntegralServer.GetIntegralParameter(); IntegralCount counts = IntegralServer.GetIntegralByAccountIdZong(CurrentCompany.CompanyId); if (counts == null) { throw new Exception("积分不够,暂不能兑换该短信!"); } if (counts.IntegralAvailable < int.Parse(hidjf.Value)) { throw new Exception("积分不够,暂不能兑换该短信!"); } var consumtion = new IntegralConsumption { CompnayId = CurrentCompany.CompanyId, CompanyShortName = CurrentCompany.AbbreviateName, AccountName = CurrentUser.Name, AccountNo = CurrentUser.UserName, AccountPhone = "", DeliveryAddress = "", CommodityCount = int.Parse(hidsmsNumber.Value), CommodityId = Guid.Empty, CommodityName = hidName.Value, Exchange = ExchangeState.Success, ExchangeTiem = DateTime.Now, ExpressCompany = "", ExpressDelivery = "", Reason = "", Remark = "积分兑换商品", Way = IntegralWay.ExchangeSms, ConsumptionIntegral = int.Parse(hidjf.Value) }; IntegralServer.InsertIntegralConsumption(consumtion); IntegralServer.UpdateIntegralCountByConsumption(0 - consumtion.ConsumptionIntegral, CurrentUser.Owner); var acc = from item in AccountService.Query(CurrentCompany.CompanyId) where item.Type == Common.Enums.AccountType.Payment select new { No = item.No }; SMSOrderService.ExChangeSms(CurrentCompany.CompanyId, int.Parse(hidjf.Value), int.Parse(hidsmsNumber.Value), int.Parse(hidjfNum.Value), acc.First().No); hidShow.Value = "0"; } catch (Exception ex) { ShowExceptionMessage(ex, "兑换短信套餐"); hidShow.Value = "1"; } if (hidShow.Value == "0") { RegisterScript("alert('兑换短信成功。');window.location.href='./SMSBuy.aspx';", true); } }
/// <summary> /// 用户消费积分 /// </summary> /// <param name="integral">消费积分</param> /// <param name="companyId">公司Id</param> public static void UpdateIntegralCountByConsumption(int integral, Guid companyId) { using (var cmd = Factory.CreateCommand()) { var reposity = Factory.CreateIntegralReposity(cmd); IntegralCount orginalCount = reposity.GetIntegralCount(companyId); IntegralCount count = new IntegralCount { CompnayId = companyId, Integral = integral }; reposity.UpdateIntegralCountByConsumption(orginalCount, count); } }
/// <summary> /// 用户有效的总积分,总剩余积分 /// </summary> /// <param name="companyId"></param> /// <returns></returns> public static Domain.IntegralCount GetIntegralByAccountIdZong(Guid companyId) { using (var cmd = Factory.CreateCommand()) { var reposity = Factory.CreateIntegralReposity(cmd); IntegralCount count = reposity.GetIntegralCount(companyId); IntegralParameterView view = reposity.GetIntegralParameter(); if (count == null) { count = new IntegralCount(); } count.IntegralAvailable = count.IntegralSurplus + count.IntegralNotDeduct < 0 ? (count.IntegralSurplus + count.IntegralNotDeduct) : (int)Math.Floor((count.IntegralSurplus + count.IntegralNotDeduct) * view.AvailabilityRatio); count.IntegralAvailable = count.IntegralCounts - count.IntegralAvailable > view.MostBuckle ? count.IntegralCounts - view.MostBuckle : count.IntegralAvailable; return(count); } }
/// <summary> /// 修改兑换状态 /// </summary> /// <param name="view"></param> /// <returns></returns> public static void UpdateIntegralConsumption(Guid id, ChinaPay.B3B.Common.Enums.ExchangeState State, string operatorName, string no, string company, string address, string reason) { using (var cmd = Factory.CreateCommand()) { var reposity = Factory.CreateIntegralReposity(cmd); cmd.BeginTransaction(); try { reposity.UpdateIntegralConsumption(id, State, no, company, address, reason); //如果是拒绝兑换,将积分返回给用户,商品数量加回去 if (State == ExchangeState.Refuse) { IntegralConsumptionView view = reposity.GetIntegralConsumption(id); IntegralCount count = new IntegralCount { CompnayId = view.CompnayId, Integral = view.ConsumptionIntegral }; IntegralInfo integral = new IntegralInfo { CompnayId = view.CompnayId, AccessTime = DateTime.Now, IntegralWay = IntegralWay.RefuseExchange, Remark = reason, Integral = view.ConsumptionIntegral }; count.Integral = integral.Integral; if (count.Integral != 0) { reposity.InsertIntegralInfo(integral); reposity.UpdateIntegralCount(count); if (view.CommodityId.HasValue) { reposity.UpdateShelvesNum(view.CommodityId.Value, view.CommodityCount); } } } cmd.CommitTransaction(); } catch (Exception) { cmd.RollbackTransaction(); throw; } } saveUpdateLog("兑换状态", "处理中", State.GetDescription(), OperatorRole.Platform, id.ToString(), operatorName); }
protected void Page_Load(object sender, EventArgs e) { RegisterOEMSkins("form.css"); RegisterOEMSkins("page.css"); if (!IsPostBack) { IntegralCount count = IntegralServer.GetIntegralByAccountIdZong(this.CurrentUser.Owner); if (count != null) { lblKeYong.Text = count.IntegralAvailable + ""; lblZong.Text = count.IntegralCounts + ""; } else { lblKeYong.Text = "0"; lblZong.Text = "0"; } } }
public IntegralCount GetIntegralCount(Guid id) { IntegralCount result = null; string sql = @"SELECT [CompnayId] ,[IntegralCount] ,[IntegralSurplus],[IntegralNotDeduct] FROM [dbo].[T_IntegralCount] WHERE CompnayId='" + id + "'"; using (var reader = ExecuteReader(sql)) { if (reader.Read()) { result = new IntegralCount(); result.CompnayId = reader.GetGuid(0); result.IntegralCounts = reader.GetInt32(1); result.IntegralSurplus = reader.GetInt32(2); result.IntegralNotDeduct = reader.GetInt32(3); } } return(result); }
/// <summary> /// 开户设置积分 /// </summary> /// <param name="companyId"></param> public static void OpenAccountIntegral(Guid companyId) { using (var cmd = Factory.CreateCommand()) { var reposity = Factory.CreateIntegralReposity(cmd); IntegralInfo integral = new IntegralInfo { CompnayId = companyId, AccessTime = DateTime.Now, Integral = SystemParamService.OpenAccountIntegral, IntegralWay = IntegralWay.OpenAccount, Remark = "开户奖励" }; IntegralCount count = new IntegralCount(); count.CompnayId = companyId; count.Integral = SystemParamService.OpenAccountIntegral; reposity.InsertIntegralInfo(integral); reposity.InsertIntegralCount(count); } }
public static void UpdateIntegralCount(int integral, Guid companyId) { using (var cmd = Factory.CreateCommand()) { var reposity = Factory.CreateIntegralReposity(cmd); IntegralCount counts = reposity.GetIntegralCount(companyId); IntegralCount count = new IntegralCount { CompnayId = companyId, Integral = integral }; if (counts == null) { count.Integral = 0; reposity.InsertIntegralCount(count); } else { reposity.UpdateIntegralCount(count); } } }
/// <summary> /// 增加用户购买机票的积分或减少用户退票的积分 /// </summary> /// <param name="IsChinaPay">是否是国付通支付</param> /// <param name="IsBuy">是否是购买机票/退票,true买票,false退票</param> private static void InsertIntergralByMoney(string username, Guid companyId, string companyShortName, decimal money, bool IsChinaPay, string orderId, bool IsBuy) { using (var cmd = Factory.CreateCommand()) { var reposity = Factory.CreateIntegralReposity(cmd); IntegralParameterView prameter = reposity.GetIntegralParameter(); IntegralCount counts = reposity.GetIntegralCount(companyId); IntegralCount count = new IntegralCount { CompnayId = companyId, Integral = prameter.SignIntegral }; if (IsBuy) { IntegralInfo integral = new IntegralInfo { CompnayId = companyId, AccessTime = DateTime.Now, IntegralWay = IntegralWay.Buy, Remark = orderId, Integral = IsChinaPay ? (int)(Math.Floor(money * ((decimal)prameter.ConsumptionIntegral / 100)) * prameter.Multiple) : (int)Math.Floor(money * ((decimal)prameter.ConsumptionIntegral / 100)) }; count.Integral = integral.Integral; if (count.Integral != 0) { reposity.InsertIntegralInfo(integral); } } else { IntegralConsumption consumtion = new IntegralConsumption { CompnayId = companyId, AccountName = username, CompanyShortName = companyShortName, AccountNo = "", AccountPhone = "", DeliveryAddress = "", CommodityCount = 0, CommodityId = Guid.Empty, CommodityName = "", Exchange = ExchangeState.Processing, ExchangeTiem = DateTime.Now, ExpressCompany = "", ExpressDelivery = "", Reason = "", Remark = orderId, Way = IntegralWay.TuiPiao }; consumtion.ConsumptionIntegral = IsChinaPay ? (int)(Math.Floor(money * ((decimal)prameter.ConsumptionIntegral / 100)) * prameter.Multiple) : (int)Math.Floor(money * ((decimal)prameter.ConsumptionIntegral / 100)); count.Integral = 0 - consumtion.ConsumptionIntegral; if (count.Integral != 0) { reposity.InsertIntegralConsumption(consumtion); } } if (count.Integral == 0) { return; } count.IsNotDeduct = true; if (counts == null) { reposity.InsertIntegralCount(count); } else { reposity.UpdateIntegralCount(count); } } }
/// <summary> /// 兑换商品 /// </summary> public static void ExChangeCommodity(Guid id, int exChangeNum, CompanyDetailInfo compnay, EmployeeDetailInfo accountinfo, OEMCommodityState stata, string domainName, Guid?oemid) { using (var cmd = Factory.CreateCommand()) { var reposity = Factory.CreateIntegralReposity(cmd); CommodityView commodityview = reposity.GetCommodity(id); if (commodityview.ValidityTime.Date < DateTime.Now.Date) { throw new Exception("该商品上架时间已经到期,不能兑换!"); } if (!commodityview.State) { throw new Exception("该商品未启用,不能兑换!"); } if (commodityview.SurplusNumber == 0) { throw new Exception("该商品已经兑换完毕,不能兑换!"); } if (commodityview.SurplusNumber < exChangeNum) { throw new Exception("该商品库存不足,不能兑换!"); } if (commodityview.NeedIntegral > 0) { IntegralParameterView paraemter = IntegralServer.GetIntegralParameter(); IntegralCount counts = IntegralServer.GetIntegralByAccountIdZong(compnay.CompanyId); if (counts == null) { throw new Exception("积分不够,暂不能兑换该商品!"); } if (counts.IntegralAvailable < commodityview.NeedIntegral * exChangeNum) { throw new Exception("积分不够,暂不能兑换该商品!"); } } commodityview.SurplusNumber = commodityview.SurplusNumber - exChangeNum; commodityview.ExchangeNumber = commodityview.ExchangeNumber + exChangeNum; cmd.BeginTransaction(); try { reposity.Update(commodityview); var consumtion = new IntegralConsumption { CompnayId = compnay.CompanyId, CompanyShortName = compnay.AbbreviateName, AccountName = accountinfo.Name, AccountNo = accountinfo.UserName, AccountPhone = compnay.ContactPhone, DeliveryAddress = commodityview.Type == CommodityType.Entity ? compnay.Address : "", CommodityCount = exChangeNum, CommodityId = commodityview.ID, CommodityName = commodityview.CommodityName, Exchange = commodityview.Type == CommodityType.Entity ? ExchangeState.Processing : ExchangeState.Success, ExchangeTiem = DateTime.Now, ExpressCompany = "", ExpressDelivery = "", Reason = "", Remark = commodityview.CommodityName, Way = commodityview.Type == CommodityType.Entity ? IntegralWay.Exchange : IntegralWay.ExchangeSms, ConsumptionIntegral = commodityview.NeedIntegral * exChangeNum, OEMCommodityState = commodityview.Type == CommodityType.SMS ? OEMCommodityState.Success : stata, OEMName = domainName, OEMID = oemid }; IntegralServer.InsertIntegralConsumption(consumtion); IntegralServer.UpdateIntegralCountByConsumption(0 - consumtion.ConsumptionIntegral, accountinfo.Owner); cmd.CommitTransaction(); } catch (Exception) { cmd.RollbackTransaction(); throw; } if (commodityview.Type == CommodityType.SMS) { var acc = from item in AccountService.Query(compnay.CompanyId) where item.Type == Common.Enums.AccountType.Payment select new { No = item.No }; SMSOrderService.ExChangeSms(compnay.CompanyId, commodityview.NeedIntegral, exChangeNum, commodityview.ExchangSmsNumber, acc.First().No); } } }
public void UpdateIntegralCount(IntegralCount info) { string sql = @"UPDATE T_IntegralCount SET IntegralCount = IntegralCount+" + info.Integral + " ,IntegralSurplus=IntegralSurplus+" + (info.IsNotDeduct ? 0 : info.Integral) + ",IntegralNotDeduct=IntegralNotDeduct+" + (info.IsNotDeduct ? info.Integral : 0) + " WHERE CompnayId ='" + info.CompnayId + "'"; ExecuteNonQuery(sql); }
public void InsertIntegralCount(IntegralCount info) { string sql = @"INSERT INTO T_IntegralCount([CompnayId],[IntegralCount] , [IntegralSurplus],[IntegralNotDeduct]) VALUES('" + info.CompnayId + "'," + info.Integral + "," + (info.IsNotDeduct?0:info.Integral) + "," + (info.IsNotDeduct?info.Integral:0) + ")"; ExecuteNonQuery(sql); }