Пример #1
0
        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);
        }
Пример #2
0
        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);
                }
            }
        }
Пример #3
0
        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);
                    }
                }
            }
        }
Пример #4
0
 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);
     }
 }
Пример #5
0
 /// <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);
     }
 }
Пример #6
0
 /// <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);
     }
 }
Пример #7
0
 /// <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);
 }
Пример #8
0
 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";
         }
     }
 }
Пример #9
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);
        }
Пример #10
0
 /// <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);
     }
 }
Пример #11
0
 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);
         }
     }
 }
Пример #12
0
 /// <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);
         }
     }
 }
Пример #13
0
 /// <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);
         }
     }
 }
Пример #14
0
        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);
        }
Пример #15
0
        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);
        }