Example #1
0
 /// <summary>
 /// 打折
 /// </summary>
 /// <returns></returns>
 public ActionResult Discount(string IORecordID, string DerateID, decimal DerateMoney)
 {
     try
     {
         ConsumerDiscountResult result = ParkSellerDerateServices.WXDiscountPlateNumber(IORecordID, DerateID, SellerLoginUser.VID, SellerLoginUser.SellerID, DerateMoney);
         return(Json(MyResult.Success("", result)));
     }
     catch (Exception ex)
     {
         ExceptionsServices.AddExceptionToDbAndTxt("WeiXin_XFJM", "打折异常", ex, LogFrom.WeiXin);
         return(Json(MyResult.Error("打折异常")));
     }
 }
Example #2
0
        /// <summary>
        /// 消费打折
        /// </summary>
        /// <param name="IORecordID"></param>
        /// <param name="DerateID"></param>
        /// <param name="VID"></param>
        /// <param name="SellerID"></param>
        /// <param name="DerateMoney"></param>
        /// <returns></returns>
        public static string DiscountPlateNumber(string IORecordID, string DerateID, string VID, string SellerID, decimal DerateMoney)
        {
            ConsumerDiscountResult result = new ConsumerDiscountResult();

            try
            {
                using (DbOperator dbOperator = ConnectionManager.CreateReadConnection())
                {
                    ParkIORecord IOmodel = null;
                    string       strsql  = "select * from ParkIORecord where RecordID=@RecordID and DataStatus<2";
                    dbOperator.ClearParameters();
                    dbOperator.AddParameter("RecordID", IORecordID);
                    using (DbDataReader reader = dbOperator.ExecuteReader(strsql.ToString()))
                    {
                        if (reader.Read())
                        {
                            IOmodel = DataReaderToModel <ParkIORecord> .ToModel(reader);
                        }
                    }
                    if (IOmodel != null)
                    {
                        if (IOmodel.IsExit)
                        {
                            result.Result = 3;

                            return(JsonHelper.GetJsonString(result));//车辆已出场
                        }

                        strsql = "select a.*,b.SellerID from ParkCarDerate a left join ParkDerate b on a.DerateID=b.DerateID where IORecordID=@IORecordID and b.SellerID=@SellerID  and a.DataStatus<2  and Status!=3";
                        dbOperator.ClearParameters();
                        dbOperator.AddParameter("IORecordID", IORecordID);
                        dbOperator.AddParameter("SellerID", SellerID);
                        using (DbDataReader reader = dbOperator.ExecuteReader(strsql.ToString()))
                        {
                            if (reader.Read())
                            {
                                result.Result = 4;
                                return(JsonHelper.GetJsonString(result));//已打折
                            }
                        }
                        ParkDerate derate = null;
                        strsql = "select * from ParkDerate where DataStatus<2 and DerateID=@DerateID";
                        dbOperator.ClearParameters();
                        dbOperator.AddParameter("DerateID", DerateID);
                        using (DbDataReader reader = dbOperator.ExecuteReader(strsql.ToString()))
                        {
                            if (reader.Read())
                            {
                                derate = DataReaderToModel <ParkDerate> .ToModel(reader);
                            }
                            else
                            {
                                result.Result = 5;
                                return(JsonHelper.GetJsonString(result));//找不到优免规则
                            }
                        }

                        ParkSeller seller = null;
                        strsql = "select * from ParkSeller where DataStatus<2 and SellerID=@SellerID";
                        dbOperator.ClearParameters();
                        dbOperator.AddParameter("SellerID", SellerID);
                        using (DbDataReader reader = dbOperator.ExecuteReader(strsql.ToString()))
                        {
                            if (reader.Read())
                            {
                                seller = DataReaderToModel <ParkSeller> .ToModel(reader);
                            }
                            else
                            {
                                result.Result = 6;
                                return(JsonHelper.GetJsonString(result));//找不到商家信息
                            }
                        }

                        decimal SumFreeMoney = 0;
                        strsql = "select SUM(FreeMoney) as SumFreeMoney from ParkCarDerate a left join ParkDerate b on a.DerateID=b.DerateID  where a.DataStatus<2 and a.Status=1 and b.SellerID=@SellerID ";
                        dbOperator.ClearParameters();
                        dbOperator.AddParameter("SellerID", SellerID);
                        using (DbDataReader reader = dbOperator.ExecuteReader(strsql.ToString()))
                        {
                            if (reader.Read())
                            {
                                SumFreeMoney = reader["SumFreeMoney"].ToDecimal();
                            }
                        }

                        if (derate.DerateType == DerateType.TimesPayment || derate.DerateType == DerateType.TimePeriodAndTimesPayment)
                        {
                            DerateMoney = (decimal)derate.DerateMoney;
                        }
                        if (derate.DerateType != DerateType.ReliefTime && derate.DerateType != DerateType.VotePayment && derate.DerateType != DerateType.DayFree)
                        {
                            if (seller.Balance + seller.Creditline < DerateMoney + SumFreeMoney)
                            {
                                result.Result = 7;
                                return(JsonHelper.GetJsonString(result));//商家余额不足
                            }
                        }
                        else if (derate.DerateType == DerateType.DayFree)
                        {
                            if (seller.Balance + seller.Creditline < (DerateMoney * derate.DerateMoney) + SumFreeMoney)
                            {
                                result.Result = 7;
                                return(JsonHelper.GetJsonString(result));//商家余额不足
                            }
                        }

                        ParkCarDerate Carderate = new ParkCarDerate();
                        Carderate.AreaID      = IOmodel.AreaID;
                        Carderate.CarDerateID = System.Guid.NewGuid().ToString();
                        Carderate.CarDerateNo = IdGenerator.Instance.GetId().ToString();
                        Carderate.CardNo      = IOmodel.CardNo;
                        Carderate.CreateTime  = DateTime.Now;
                        Carderate.DerateID    = DerateID;
                        Carderate.ExpiryTime  = DateTime.Now.AddDays(7);
                        Carderate.Status      = CarDerateStatus.Used;
                        if (derate.DerateType != DerateType.ReliefTime && derate.DerateType != DerateType.VotePayment && derate.DerateType != DerateType.DayFree)
                        {
                            Carderate.FreeMoney = DerateMoney;
                        }
                        else if (derate.DerateType == DerateType.DayFree)
                        {
                            Carderate.FreeMoney  = DerateMoney * derate.DerateMoney;
                            Carderate.ExpiryTime = IOmodel.EntranceTime.AddDays((int)DerateMoney);
                        }
                        else
                        {
                            Carderate.FreeTime = (int)DerateMoney;
                        }


                        Carderate.IORecordID  = IOmodel.RecordID;
                        Carderate.HaveUpdate  = 1;
                        Carderate.PKID        = IOmodel.ParkingID;
                        Carderate.PlateNumber = IOmodel.PlateNumber;
                        Carderate.DataStatus  = 0;

                        Carderate.LastUpdateTime = DateTime.Now;
                        dbOperator.BeginTransaction();
                        strsql  = "insert into ParkCarDerate (CarDerateID,CarDerateNo,DerateID,FreeTime,PlateNumber,IORecordID,CardNo,ExpiryTime,CreateTime,Status,FreeMoney,AreaID,PKID,LastUpdateTime,HaveUpdate,DataStatus)";
                        strsql += "values(@CarDerateID,@CarDerateNo,@DerateID,@FreeTime,@PlateNumber,@IORecordID,@CardNo,@ExpiryTime,@CreateTime,@Status,@FreeMoney,@AreaID,@PKID,@LastUpdateTime,@HaveUpdate,@DataStatus)";
                        dbOperator.ClearParameters();
                        dbOperator.AddParameter("CarDerateID", Carderate.CarDerateID);

                        dbOperator.AddParameter("CarDerateNo", Carderate.CarDerateNo);
                        dbOperator.AddParameter("DerateID", Carderate.DerateID);
                        dbOperator.AddParameter("FreeTime", Carderate.FreeTime);
                        dbOperator.AddParameter("PlateNumber", Carderate.PlateNumber);
                        dbOperator.AddParameter("IORecordID", Carderate.IORecordID);
                        dbOperator.AddParameter("CardNo", Carderate.CardNo);
                        dbOperator.AddParameter("ExpiryTime", Carderate.ExpiryTime);
                        dbOperator.AddParameter("CreateTime", Carderate.CreateTime);
                        dbOperator.AddParameter("Status", Carderate.Status);
                        dbOperator.AddParameter("FreeMoney", Carderate.FreeMoney);

                        dbOperator.AddParameter("AreaID", Carderate.AreaID);
                        dbOperator.AddParameter("PKID", Carderate.PKID);
                        dbOperator.AddParameter("LastUpdateTime", Carderate.LastUpdateTime);
                        dbOperator.AddParameter("HaveUpdate", Carderate.HaveUpdate);
                        dbOperator.AddParameter("DataStatus", Carderate.DataStatus);
                        if (dbOperator.ExecuteNonQuery(strsql) <= 0)
                        {
                            dbOperator.RollbackTransaction();
                            result.Result = 8;
                            return(JsonHelper.GetJsonString(result));//打折失败
                        }
                        if (derate.DerateType == DerateType.DayFree)
                        {
                            strsql = "update ParkSeller set Balance=Balance-" + Carderate.FreeMoney + "where SellerID=@SellerID";
                            dbOperator.ClearParameters();
                            dbOperator.AddParameter("SellerID", seller.SellerID);
                            if (dbOperator.ExecuteNonQuery(strsql) <= 0)
                            {
                                dbOperator.RollbackTransaction();
                                result.Result = 8;
                                return(JsonHelper.GetJsonString(result));//打折失败
                            }
                        }
                        dbOperator.CommitTransaction();
                        result.Result   = 1;
                        result.ResModel = Carderate;
                        return(JsonHelper.GetJsonString(result));
                    }
                    else
                    {
                        result.Result = 2;
                        return(JsonHelper.GetJsonString(result));//找不到进出记录信息
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Fatal("消费打折回调异常!DiscountPlateNumberCallback()" + ex.Message + "\r\n");
                result.Result = -1;
                return(JsonHelper.GetJsonString(result));//异常
            }
        }