public OrderDepositRentInfo GetRentOrder(int merchantId, int posMachineId)
        {
            var merchant = CurrentDb.Merchant.Where(m => m.Id == merchantId).FirstOrDefault();

            var merchantPosMachine = CurrentDb.MerchantPosMachine.Where(m => m.PosMachineId == posMachineId && m.MerchantId == merchantId).FirstOrDefault();

            var orderToRent = CurrentDb.OrderToDepositRent.Where(m => m.MerchantId == merchantId && m.PosMachineId == posMachineId && m.ProductType == Enumeration.ProductType.PosMachineRent && m.Status == Enumeration.OrderStatus.WaitPay).FirstOrDefault();

            CalculateRent calculateRent = new CalculateRent(merchantPosMachine.Rent);

            if (orderToRent == null)
            {
                orderToRent              = new OrderToDepositRent();
                orderToRent.MerchantId   = merchant.Id;
                orderToRent.PosMachineId = posMachineId;
                orderToRent.UserId       = merchantPosMachine.UserId;
                orderToRent.CreateTime   = this.DateTime;
                orderToRent.Creator      = 0;
                orderToRent.SubmitTime   = this.DateTime;
                orderToRent.ProductType  = Enumeration.ProductType.PosMachineRent;
                orderToRent.ProductName  = Enumeration.ProductType.PosMachineRent.GetCnName();
                orderToRent.ProductId    = (int)Enumeration.ProductType.PosMachineRent;

                orderToRent.Deposit = 0;

                orderToRent.RentMonths  = 3;
                orderToRent.MonthlyRent = calculateRent.MonthlyRent;
                orderToRent.RentTotal   = calculateRent.GetRent(orderToRent.RentMonths);
                orderToRent.RentVersion = calculateRent.Version;

                orderToRent.Price  = orderToRent.RentTotal;
                orderToRent.Status = Enumeration.OrderStatus.WaitPay;
                CurrentDb.OrderToDepositRent.Add(orderToRent);
                CurrentDb.SaveChanges();
                orderToRent.Sn = Sn.Build(SnType.DepositRent, orderToRent.Id);
                CurrentDb.SaveChanges();
            }


            OrderDepositRentInfo orderDepositRentInfo = new OrderDepositRentInfo();

            orderDepositRentInfo.Id           = orderToRent.Id;
            orderDepositRentInfo.Sn           = orderToRent.Sn;
            orderDepositRentInfo.Product      = orderToRent.ProductName;
            orderDepositRentInfo.ProductType  = orderToRent.ProductType;
            orderDepositRentInfo.Status       = orderToRent.Status;
            orderDepositRentInfo.StatusName   = orderToRent.Status.GetCnName();
            orderDepositRentInfo.MonthlyRent  = calculateRent.MonthlyRent;
            orderDepositRentInfo.Remarks      = calculateRent.Remark;
            orderDepositRentInfo.MerchantCode = merchant.ClientCode;
            orderDepositRentInfo.RentDueDate  = merchantPosMachine.RentDueDate.ToUnifiedFormatDate();


            return(orderDepositRentInfo);
        }
Beispiel #2
0
        public CustomJsonResult Confirm(int operater, PayConfirmModel model)
        {
            CustomJsonResult result = new CustomJsonResult();

            using (TransactionScope ts = new TransactionScope())
            {
                YiBanShiPayOrder   yOrder             = new YiBanShiPayOrder();
                YiBanShiOrderInfo  yOrderInfo         = new YiBanShiOrderInfo();
                MerchantPosMachine merchantPosMachine = null;
                CalculateRent      calculateRent      = null;
                YbsMerchantModel   ybs_mer            = null;
                switch (model.ProductType)
                {
                case Enumeration.ProductType.InsureForCarForInsure:
                case Enumeration.ProductType.InsureForCarForRenewal:

                    #region  投保和续保
                    var orderToCarInsure = CurrentDb.OrderToCarInsure.Where(m => m.Sn == model.OrderSn).FirstOrDefault();

                    var payCarInsureConfirmParams = Newtonsoft.Json.JsonConvert.DeserializeObject <PayCarInsureConfirmParams>(model.Params.ToString());


                    var orderToCarInsureOfferCompany = CurrentDb.OrderToCarInsureOfferCompany.Where(m => m.Id == payCarInsureConfirmParams.OfferId).FirstOrDefault();

                    orderToCarInsure.InsuranceCompanyId   = orderToCarInsureOfferCompany.InsuranceCompanyId;
                    orderToCarInsure.InsureImgUrl         = orderToCarInsureOfferCompany.InsureImgUrl;
                    orderToCarInsure.InsuranceCompanyName = orderToCarInsureOfferCompany.InsuranceCompanyName;
                    orderToCarInsure.InsuranceOrderId     = orderToCarInsureOfferCompany.InsuranceOrderId;
                    orderToCarInsure.CommercialPrice      = orderToCarInsureOfferCompany.CommercialPrice == null ? 0 : orderToCarInsureOfferCompany.CommercialPrice.Value;
                    orderToCarInsure.TravelTaxPrice       = orderToCarInsureOfferCompany.TravelTaxPrice == null ? 0 : orderToCarInsureOfferCompany.TravelTaxPrice.Value;
                    orderToCarInsure.CompulsoryPrice      = orderToCarInsureOfferCompany.CompulsoryPrice == null ? 0 : orderToCarInsureOfferCompany.CompulsoryPrice.Value;

                    orderToCarInsure.ShippingAddress = payCarInsureConfirmParams.ShippingAddress;
                    orderToCarInsure.Price           = orderToCarInsureOfferCompany.InsureTotalPrice.Value;

                    CurrentDb.SaveChanges();

                    var insuranceCompany = CurrentDb.InsuranceCompany.Where(m => m.Id == orderToCarInsureOfferCompany.InsuranceCompanyId).FirstOrDefault();


                    yOrder.prodcut   = orderToCarInsure.ProductName;
                    yOrder.transName = "消费";
                    yOrder.amount    = orderToCarInsure.Price.ToF2Price().Replace(".", "").PadLeft(12, '0');

                    yOrder.confirmField.Add(new OrderField("订单编号", orderToCarInsure.Sn.NullToEmpty()));
                    yOrder.confirmField.Add(new OrderField("保险公司", orderToCarInsure.InsuranceCompanyName.NullToEmpty()));
                    yOrder.confirmField.Add(new OrderField("车主姓名", orderToCarInsure.CarOwner.NullToEmpty()));
                    yOrder.confirmField.Add(new OrderField("车牌号码", orderToCarInsure.CarPlateNo.NullToEmpty()));
                    yOrder.confirmField.Add(new OrderField("支付金额", string.Format("{0}元", orderToCarInsure.Price.ToF2Price())));


                    yOrderInfo.order_no           = orderToCarInsure.Sn.NullToEmpty();
                    yOrderInfo.insurance_company  = orderToCarInsure.InsuranceCompanyName.NullToEmpty();
                    yOrderInfo.insurance_type     = "";
                    yOrderInfo.customer_id_type   = "01";
                    yOrderInfo.customer_id        = orderToCarInsure.CarOwnerIdNumber.NullToEmpty();
                    yOrderInfo.customer_sex       = "";
                    yOrderInfo.customer_name      = orderToCarInsure.CarOwner.NullToEmpty();
                    yOrderInfo.customer_mobile_no = "";
                    yOrderInfo.customer_birthdate = "";
                    yOrderInfo.insurance_order_no = orderToCarInsure.InsuranceOrderId.NullToEmpty();
                    yOrderInfo.car_type           = orderToCarInsure.CarVechicheType.NullToEmpty();
                    yOrderInfo.car_license        = orderToCarInsure.CarPlateNo.NullToEmpty();
                    yOrderInfo.car_frame_no       = "";
                    yOrderInfo.payer_id_type      = "";
                    yOrderInfo.payer_id           = "";
                    yOrderInfo.payer_name         = "";
                    yOrderInfo.payer_mobile_no    = "";
                    yOrderInfo.payer_address      = "";


                    ybs_mer = BizFactory.Ybs.GetCarInsureMerchantInfo(insuranceCompany.Id, insuranceCompany.YBS_MerchantId, insuranceCompany.YBS_MerchantCode);

                    yOrderInfo.ybs_mer_code = ybs_mer.ybs_mer_code;
                    yOrderInfo.merchant_id  = ybs_mer.merchant_id;

                    yOrderInfo.merchant_name = "";
                    yOrderInfo.phone_no      = "";
                    yOrderInfo.cashier_id    = "";
                    yOrderInfo.teller_id     = "45567";//暂定

                    yOrder.orderInfo = yOrderInfo;


                    result = new CustomJsonResult(ResultType.Success, ResultCode.Success, "确认成功", yOrder);
                    #endregion

                    break;

                case Enumeration.ProductType.InsureForCarForClaim:

                    #region 理赔
                    var orderToCarClaim = CurrentDb.OrderToCarClaim.Where(m => m.Sn == model.OrderSn).FirstOrDefault();


                    yOrder.prodcut   = orderToCarClaim.ProductName;
                    yOrder.transName = "消费";

                    yOrder.amount = orderToCarClaim.Price.ToF2Price().Replace(".", "").PadLeft(12, '0');

                    yOrder.confirmField.Add(new OrderField("订单编号", orderToCarClaim.Sn.NullToEmpty()));
                    yOrder.confirmField.Add(new OrderField("保险公司", orderToCarClaim.InsuranceCompanyName));
                    yOrder.confirmField.Add(new OrderField("车牌号码", orderToCarClaim.CarPlateNo));
                    yOrder.confirmField.Add(new OrderField("支付金额", string.Format("{0}元", orderToCarClaim.Price.NullToEmpty())));


                    yOrderInfo.order_no           = orderToCarClaim.Sn;
                    yOrderInfo.customer_id_type   = "";
                    yOrderInfo.customer_id        = "";
                    yOrderInfo.customer_sex       = "";
                    yOrderInfo.customer_name      = "";
                    yOrderInfo.customer_mobile_no = "";
                    yOrderInfo.customer_birthdate = "";
                    yOrderInfo.payer_id_type      = "";
                    yOrderInfo.payer_id           = "";
                    yOrderInfo.payer_name         = "";
                    yOrderInfo.payer_mobile_no    = "";
                    yOrderInfo.payer_address      = "";



                    ybs_mer = BizFactory.Ybs.GetCarClaimMerchantInfo();
                    yOrderInfo.ybs_mer_code = ybs_mer.ybs_mer_code;
                    yOrderInfo.merchant_id  = ybs_mer.merchant_id;



                    yOrderInfo.merchant_name = "";
                    yOrderInfo.phone_no      = "";
                    yOrderInfo.cashier_id    = "";
                    yOrderInfo.teller_id     = "";

                    yOrder.orderInfo = yOrderInfo;

                    result = new CustomJsonResult(ResultType.Success, ResultCode.Success, "确认成功", yOrder);
                    #endregion

                    break;

                case Enumeration.ProductType.PosMachineDepositRent:

                    #region 押金租金


                    var payDepositRentParams = Newtonsoft.Json.JsonConvert.DeserializeObject <PayDepositRentConfirmParams>(model.Params.ToString());

                    var orderToDepositRent = CurrentDb.OrderToDepositRent.Where(m => m.Sn == model.OrderSn).FirstOrDefault();

                    merchantPosMachine = CurrentDb.MerchantPosMachine.Where(m => m.MerchantId == orderToDepositRent.MerchantId && m.PosMachineId == orderToDepositRent.PosMachineId).FirstOrDefault();

                    calculateRent = new CalculateRent(merchantPosMachine.Rent);

                    orderToDepositRent.MonthlyRent = calculateRent.MonthlyRent;
                    orderToDepositRent.RentMonths  = payDepositRentParams.RentMonths;
                    orderToDepositRent.RentTotal   = calculateRent.GetRent(payDepositRentParams.RentMonths);
                    orderToDepositRent.RentVersion = calculateRent.Version;


                    orderToDepositRent.Price       = orderToDepositRent.Deposit + orderToDepositRent.RentTotal;
                    orderToDepositRent.RentDueDate = this.DateTime.AddMonths(payDepositRentParams.RentMonths);

                    yOrder.prodcut   = orderToDepositRent.ProductName;
                    yOrder.transName = "消费";
                    yOrder.amount    = orderToDepositRent.Price.ToF2Price().Replace(".", "").PadLeft(12, '0');

                    yOrder.confirmField.Add(new OrderField("订单编号", orderToDepositRent.Sn.NullToEmpty()));
                    yOrder.confirmField.Add(new OrderField("押金", string.Format("{0}元", orderToDepositRent.Deposit.ToF2Price())));
                    yOrder.confirmField.Add(new OrderField("租金", string.Format("{0}元", orderToDepositRent.RentTotal.ToF2Price())));
                    yOrder.confirmField.Add(new OrderField("到期时间", orderToDepositRent.RentDueDate.ToUnifiedFormatDate()));
                    yOrder.confirmField.Add(new OrderField("支付金额", string.Format("{0}元", orderToDepositRent.Price.NullToEmpty())));


                    yOrderInfo.order_no           = orderToDepositRent.Sn;
                    yOrderInfo.customer_id_type   = "";
                    yOrderInfo.customer_id        = "";
                    yOrderInfo.customer_sex       = "";
                    yOrderInfo.customer_name      = "";
                    yOrderInfo.customer_mobile_no = "";
                    yOrderInfo.customer_birthdate = "";
                    yOrderInfo.payer_id_type      = "";
                    yOrderInfo.payer_id           = "";
                    yOrderInfo.payer_name         = "";
                    yOrderInfo.payer_mobile_no    = "";
                    yOrderInfo.payer_address      = "";

                    ybs_mer = BizFactory.Ybs.GetDepositRentMerchantInfo();
                    yOrderInfo.ybs_mer_code = ybs_mer.ybs_mer_code;
                    yOrderInfo.merchant_id  = ybs_mer.merchant_id;


                    yOrderInfo.merchant_name = "";
                    yOrderInfo.phone_no      = "";
                    yOrderInfo.cashier_id    = "";
                    yOrderInfo.teller_id     = "";

                    yOrder.orderInfo = yOrderInfo;

                    result = new CustomJsonResult(ResultType.Success, ResultCode.Success, "确认成功", yOrder);
                    #endregion

                    break;

                case Enumeration.ProductType.PosMachineRent:

                    #region 租金

                    var orderToRent = CurrentDb.OrderToDepositRent.Where(m => m.Sn == model.OrderSn).FirstOrDefault();

                    var payRentParams = Newtonsoft.Json.JsonConvert.DeserializeObject <PayDepositRentConfirmParams>(model.Params.ToString());

                    merchantPosMachine = CurrentDb.MerchantPosMachine.Where(m => m.MerchantId == orderToRent.MerchantId && m.PosMachineId == orderToRent.PosMachineId).FirstOrDefault();

                    calculateRent = new CalculateRent(merchantPosMachine.Rent);

                    orderToRent.MonthlyRent = calculateRent.MonthlyRent;
                    orderToRent.RentMonths  = payRentParams.RentMonths;
                    orderToRent.RentTotal   = calculateRent.GetRent(payRentParams.RentMonths);
                    orderToRent.RentVersion = calculateRent.Version;
                    orderToRent.Price       = orderToRent.Deposit + orderToRent.RentTotal;
                    orderToRent.RentDueDate = merchantPosMachine.RentDueDate.Value.AddMonths(payRentParams.RentMonths);

                    yOrderInfo.order_no = orderToRent.Sn;
                    yOrder.transName    = "消费";
                    yOrder.amount       = orderToRent.Price.ToF2Price().Replace(".", "").PadLeft(12, '0');

                    yOrder.confirmField.Add(new OrderField("订单编号", orderToRent.Sn.NullToEmpty()));
                    yOrder.confirmField.Add(new OrderField("租金", string.Format("{0}元", orderToRent.RentTotal.ToF2Price())));
                    yOrder.confirmField.Add(new OrderField("续期", string.Format("{0}个月", payRentParams.RentMonths)));
                    yOrder.confirmField.Add(new OrderField("到期时间", orderToRent.RentDueDate.ToUnifiedFormatDate()));
                    yOrder.confirmField.Add(new OrderField("支付金额", string.Format("{0}元", orderToRent.Price.NullToEmpty())));


                    yOrderInfo.order_no           = orderToRent.Sn;
                    yOrderInfo.customer_id_type   = "";
                    yOrderInfo.customer_id        = "";
                    yOrderInfo.customer_sex       = "";
                    yOrderInfo.customer_name      = "";
                    yOrderInfo.customer_mobile_no = "";
                    yOrderInfo.customer_birthdate = "";
                    yOrderInfo.payer_id_type      = "";
                    yOrderInfo.payer_id           = "";
                    yOrderInfo.payer_name         = "";
                    yOrderInfo.payer_mobile_no    = "";
                    yOrderInfo.payer_address      = "";

                    ybs_mer = BizFactory.Ybs.GetDepositRentMerchantInfo();
                    yOrderInfo.ybs_mer_code = ybs_mer.ybs_mer_code;
                    yOrderInfo.merchant_id  = ybs_mer.merchant_id;


                    yOrderInfo.merchant_name = "";
                    yOrderInfo.phone_no      = "";
                    yOrderInfo.cashier_id    = "";
                    yOrderInfo.teller_id     = "";

                    yOrder.orderInfo = yOrderInfo;

                    result = new CustomJsonResult(ResultType.Success, ResultCode.Success, "确认成功", yOrder);
                    #endregion

                    break;
                }

                CurrentDb.SaveChanges();
                ts.Complete();
            }

            return(result);
        }