Example #1
0
        /// <summary>
        /// 商品查询
        /// </summary>
        /// <param name="Id">ID查询商品</param>
        /// <returns></returns>
        internal static Tb_Resources_Details GetResourcesModel(string Id)
        {
            IDbConnection        con = new SqlConnection(PubConstant.GetConnectionString("BusinessContionString"));
            Tb_Resources_Details m   = con.Query <Tb_Resources_Details>("select * from dbo.Tb_Resources_Details where ResourcesID=@UserId and isnull( IsDelete,0)=0", new { UserId = Id }).SingleOrDefault <Tb_Resources_Details>();

            return(m);
        }
Example #2
0
        /// <summary>
        /// 加入购物车  SetShoppingCar
        /// </summary>
        /// <param name="row"></param>
        /// UserId              用户编码【必填】
        /// ResourcesID         商品编码【必填】
        /// BussId              商家编码【必填】
        /// Number              数量 【可不填,默认为1】
        /// PropertysId         属性规格【格式:属性ID:规格ID,属性ID:规格ID,属性ID:规格ID】
        /// 返回:
        ///     false:错误信息
        ///     true:操作成功
        /// <returns></returns>
        private string SetShoppingCar(DataRow row)
        {
            if (!row.Table.Columns.Contains("UserId") || string.IsNullOrEmpty(row["UserId"].ToString()))
            {
                return(JSONHelper.FromString(false, "用户编码不能为空"));
            }
            if (!row.Table.Columns.Contains("ResourcesID") || string.IsNullOrEmpty(row["ResourcesID"].ToString()))
            {
                return(JSONHelper.FromString(false, "商品编码不能为空"));
            }
            if (!row.Table.Columns.Contains("BussId") || string.IsNullOrEmpty(row["BussId"].ToString()))
            {
                return(JSONHelper.FromString(false, "商家编码不能为空"));
            }
            //if (!row.Table.Columns.Contains("PropertysId") || string.IsNullOrEmpty(row["PropertysId"].ToString()))
            //{
            //    return JSONHelper.FromString(false, "规格编码不能为空");
            //}

            // 2017年9月23日16:47:32,谭洋
            int?CorpId = null;

            if (row.Table.Columns.Contains("CorpId") && !string.IsNullOrEmpty(row["CorpId"].ToString()))
            {
                CorpId = AppGlobal.StrToInt(row["CorpId"].ToString());
            }

            string UserId      = row["UserId"].ToString();
            string BussId      = row["BussId"].ToString();
            string ResourcesID = row["ResourcesID"].ToString();
            int    Number      = 1;//加入购物车数量,默认1
            //该参数值格式为:  属性ID:规格ID,属性ID:规格ID,属性ID:规格ID
            string PropertysId = row["PropertysId"].ToString();
            //获取属性查询条件
            string PropertysIdWhere = BussinessCommon.GetShoppingPropertys(PropertysId);

            if (row.Table.Columns.Contains("Number") && AppGlobal.StrToInt(row["Number"].ToString()) > 0)
            {
                Number = AppGlobal.StrToInt(row["Number"].ToString());
            }

            IDbConnection con = new SqlConnection(PubConstant.GetConnectionString("BusinessContionString"));
            string        str = "";

            try
            {
                List <Tb_ShoppingCar> Car = new List <Tb_ShoppingCar>();
                //查询购物车中是否有该商品
                Car = BussinessCommon.GetShoppingCheck(UserId, ResourcesID);
                Tb_Resources_Details Resources = BussinessCommon.GetResourcesModel(ResourcesID);
                if (Resources == null || string.IsNullOrEmpty(Resources.ResourcesID))
                {
                    return(JSONHelper.FromString(false, "该商品不存在"));
                }

                if (Car != null && Car.Count > 0)//如果已存在此商品,
                {
                    int j = 0;
                    int z = 0;
                    foreach (Tb_ShoppingCar item in Car)//循环此人该购物车中的这种商品
                    {
                        z++;
                        DataSet ds = null;
                        if (PropertysIdWhere != "")
                        {
                            //查询属性明细中已有的属性
                            ds = BussinessCommon.GetShoppingDetailedCheck(item.Id, PropertysIdWhere);
                        }

                        //如果属性存在,新增
                        if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                        {
                            if (item.Number + Number > Resources.ResourcesCount)//库存检测
                            {
                                return(JSONHelper.FromString(false, "该商品库存不足"));
                            }
                            else//新增
                            {
                                SetShopping(CorpId, UserId, ResourcesID, BussId, Number, PropertysId, con);
                            }
                            j++;
                            break;
                        }
                        //属性不存在,则添加属性
                        if (z == Car.Count)
                        {
                            if (item.Number + Number > Resources.ResourcesCount)//库存检测
                            {
                                return(JSONHelper.FromString(false, "该商品库存不足"));
                            }
                            item.Number = item.Number + Number;
                            con.Update <Tb_ShoppingCar>(item);
                            //添加属性
                            SetShoppingCarDetailed(BussId, PropertysId, con, item);
                        }
                    }
                }
                else
                {
                    if (Number > Resources.ResourcesCount)//库存检测
                    {
                        return(JSONHelper.FromString(false, "该商品库存不足"));
                    }
                    else//新增
                    {
                        SetShopping(CorpId, UserId, ResourcesID, BussId, Number, PropertysId, con);
                    }
                }
            }
            catch (Exception ex)
            {
                str = ex.Message;
            }

            if (str != "")
            {
                return(JSONHelper.FromString(false, str));
            }
            else
            {
                return(JSONHelper.FromString(true, "操作成功"));
            }
        }
        /// <summary>
        /// 订单继续支付
        /// </summary>
        public string GoOnGenerateOrder(DataSet Ds)
        {
            DataRow Row = Ds.Tables[0].Rows[0];

            bool   IsBankOk     = false;
            bool   IsBusinessOk = true;//商家订单是否生成成功
            string OrderId      = Row["OrderId"].ToString();
            string prepay_str   = "";

            //取得上一次商家订单信息
            IDbConnection ConnOrder  = new SqlConnection(ConnectionDb.GetBusinessConnection());
            string        OrderQuery = "SELECT * FROM Tb_Charge_Receipt WHERE OrderId=@OrderId OR Id=@OrderId";

            Model.Model.Buss.Tb_Charge_Receipt TOrder = ConnOrder.Query <Model.Model.Buss.Tb_Charge_Receipt>(OrderQuery, new { OrderId = OrderId }).SingleOrDefault();

            if (TOrder != null)
            {
                IsBusinessOk = true;
            }
            string txnTime  = TOrder.txnTime.ToString();
            string BussId   = TOrder.BussId.ToString();
            bool   IsConfig = GenerateConfig(BussId);

            if (IsConfig == false)
            {
                return(JSONHelper.FromString(false, "未配置证书文件"));
            }

            decimal realAmount = 0.0m;

            string sql = @"SELECT * FROM Tb_Charge_ReceiptDetail WHERE ReceiptCode=@ReceiptCode";

            IEnumerable <Tb_Charge_ReceiptDetail> ReceiptDetails = ConnOrder.Query <Tb_Charge_ReceiptDetail>(sql, new { ReceiptCode = TOrder.Id });

            Dictionary <String, decimal> keyValuePairs = new Dictionary <string, decimal>();

            foreach (Tb_Charge_ReceiptDetail item in ReceiptDetails)
            {
                decimal unitPrice = 0.0m;
                // 计算此时应该多少钱
                sql = @"SELECT * FROM Tb_Resources_Details WHERE ResourcesID=@ResourcesID";
                Tb_Resources_Details resources = ConnOrder.Query <Tb_Resources_Details>(sql, new { ResourcesID = item.ResourcesID }).FirstOrDefault();
                if (resources != null)
                {
                    if (resources.IsGroupBuy == "是" &&
                        resources.GroupBuyEndDate.HasValue &&
                        resources.GroupBuyEndDate.Value > DateTime.Now &&
                        resources.GroupBuyStartDate.HasValue &&
                        resources.GroupBuyStartDate.Value < DateTime.Now
                        )
                    {
                        realAmount += (item.GroupPrice.HasValue ? item.GroupPrice.Value : 0) * item.Quantity;
                        unitPrice   = item.GroupPrice.HasValue ? item.GroupPrice.Value : 0;
                    }
                    else
                    {
                        unitPrice = (item.SalesPrice.Value - item.DiscountPrice.Value) >= 0 ? item.SalesPrice.Value - item.DiscountPrice.Value : 0;
                        //如果销售价格 小于 优惠价 则算成0
                        realAmount += ((item.SalesPrice.Value - item.DiscountPrice.Value) >= 0 ? item.SalesPrice.Value - item.DiscountPrice.Value : 0) * item.Quantity;
                    }

                    keyValuePairs.Add(item.RpdCode, unitPrice);

                    if (item.OffsetMoney.HasValue)
                    {
                        realAmount -= item.OffsetMoney.Value;
                    }

                    if (item.OffsetMoney2.HasValue)
                    {
                        realAmount -= item.OffsetMoney2.Value;
                    }

                    //修改当前商品的团购价
                }
            }

            //加上运费
            var money = realAmount + TOrder.Freight;

            //如果不需要给钱 直接完成该订单
            if (money <= 0)
            {
                String result = ReceBusinessOrder(OrderId, 0);
                return(JsonConvert.SerializeObject(new
                {
                    Result = result.ToLower() == "success" ? "true" : "false",
                    Msg = result,
                }));
            }

            ChangeUnitPrice(keyValuePairs);

            if (IsBusinessOk == true)
            {
                sql = "SELECT * FROM Tb_System_BusinessCorp WHERE BussId=@BussId";
                Tb_System_BusinessCorp bussInfo = ConnOrder.Query <Tb_System_BusinessCorp>(sql, new { BussId = TOrder.BussId }).FirstOrDefault();

                //生成预支付单,并返回订单ID
                string BankResult = GenerateBankOrder(BussId, OrderId, txnTime, money, ref IsBankOk, ref prepay_str, bussInfo.BussName + "订单,共" + ReceiptDetails.Count() + "种商品");
                if (IsBankOk == false)
                {
                    return(JSONHelper.FromString(false, BankResult));
                }
                else
                {
                    //更新订单银行流水号
                    IDbConnection Conn  = new SqlConnection(ConnectionDb.GetBusinessConnection());
                    string        Query = @"UPDATE Tb_Charge_Receipt SET PrepayStr=@prepay_str  WHERE OrderId = @OrderId OR Id=@OrderId ";
                    Conn.Execute(Query, new { prepay_str = prepay_str.ToString(), OrderId = OrderId });
                    //返回请求字符串
                    return(JSONHelper.FromJsonString(true, prepay_str));
                }
            }
            return(JSONHelper.FromString(false, "生成订单失败"));
        }
        /// <summary>
        /// 生成商家订单
        /// </summary>
        public string GenerateBusinessOrder(DataSet Ds, string communityId, string BussId, string UserId, string txnTime, ref bool IsOk, ref decimal Amount, ref decimal CouponAmount, ref string OrderId, string Name, string Mobile, string DeliverAddress)
        {
            DataRow Row = Ds.Tables[0].Rows[0];

            int?corpId = null;

            if (Row.Table.Columns.Contains("CorpId") && !string.IsNullOrEmpty(Row["CorpId"].ToString()))
            {
                corpId = AppGlobal.StrToInt(Row["CorpId"].ToString());
            }

            var iid = Guid.NewGuid().ToString();

            // 生成商家收款订单
            Tb_Charge_Receipt Receipt = new Tb_Charge_Receipt
            {
                Id             = iid,
                CorpId         = corpId,
                BussId         = BussId.ToString(),
                UserId         = UserId,
                OrderId        = Guid.NewGuid().ToString().Replace("-", ""),
                ReceiptSign    = DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(1000, 9999).ToString(),
                Name           = Name,
                IsPay          = "未付款",
                IsReceive      = "未收货",
                IsDeliver      = "未发货",
                ReceiptMemo    = Row["ReceiptMemo"].ToString(),
                ReceiptType    = "通用票据",
                ReceiptDate    = DateTime.Now,
                PayDate        = null,
                MchId          = c.partner,
                Partner        = c.partner,
                PrepayStr      = "",
                txnTime        = txnTime.ToString(),
                ReturnCode     = "",
                ReturnMsg      = "",
                Express        = "",
                ExpressNum     = "",
                Mobile         = Mobile,         //联系电话
                DeliverAddress = DeliverAddress, //收货地址
                IsDelete       = 0
            };

            // 是否使用优惠券抵扣
            if (Row.Table.Columns.Contains("UseCoupon"))
            {
                Receipt.IsUseCoupon = AppGlobal.StrToInt(Row["UseCoupon"].ToString());
            }


            using (IDbConnection conn = new SqlConnection(ConnectionDb.GetBusinessConnection()))
            {
                // 保存订单信息
                conn.Insert(Receipt);

                if (!string.IsNullOrEmpty(communityId))
                {
                    conn.Execute("UPDATE Tb_Charge_Receipt SET CommunityId=@CommunityId WHERE ID=@IID",
                                 new { CommunityId = communityId, IID = iid });
                }

                /*
                 *  计算此时的订单金额,此时不应该保存商品的价格信息;
                 *  如果用户不付款,且订单未取消期间,商家更改了商品单价或可优惠价或规格追加价,付款时则需要重新计算
                 *
                 *  1、获取用户在该商家的可用优惠券余额
                 *  2、获取商品此时的单价和可优惠价,对应的规格型号的追加单价
                 *  3、计算当前订单内的商品是否支持优惠券抵扣,如果支持,计算最多能抵扣的价格并更新优惠券余额
                 */

                // 1、获取用户优惠券余额
                dynamic balanceInfo = conn.Query <dynamic>(@"SELECT isnull(Balance1,0) AS Balance1,isnull(Balance2,0) AS Balance2
                                                            FROM
                                                              (SELECT Balance1=(SELECT Balance FROM Tb_Resources_CouponBalance
                                                              WHERE UserId=@UserId
                                                                    AND CorpId=@CorpId AND BussId=@BussId),
                                                                    Balance2=(SELECT Balance FROM Tb_Resources_CouponBalance
                                                              WHERE UserId=@UserId
                                                                    AND CorpId=@CorpId AND BussId IS NULL)) as x;",
                                                           new { UserId = Receipt.UserId, CorpId = corpId, BussId = Receipt.BussId }).FirstOrDefault();

                decimal totalAmount         = 0.0m; // 商品总价
                decimal userCouponBalance   = 0.0m; // 用户可用优惠券余额
                decimal totalUseCouponMoney = 0.0m; // 当前能使用优惠券抵扣的钱

                decimal bussBalance = 0.0m;         // 商家专用券余额
                decimal corpBalance = 0.0m;         // 物管通用券余额

                if (balanceInfo != null)
                {
                    bussBalance       = balanceInfo.Balance1;
                    corpBalance       = balanceInfo.Balance2;
                    userCouponBalance = bussBalance + corpBalance;
                }

                // 2、获取商品价格信息
                foreach (DataRow DetailRow in Ds.Tables["Product"].Rows)
                {
                    // 订单商品详情
                    Tb_Charge_ReceiptDetail ReceiptDetail = new Tb_Charge_ReceiptDetail();
                    ReceiptDetail.RpdCode      = Guid.NewGuid().ToString();
                    ReceiptDetail.ReceiptCode  = Receipt.Id;
                    ReceiptDetail.ShoppingId   = DetailRow["ShoppingId"].ToString();
                    ReceiptDetail.ResourcesID  = DetailRow["Id"].ToString();
                    ReceiptDetail.RpdMemo      = DetailRow["RpdMemo"].ToString();
                    ReceiptDetail.Quantity     = DataSecurity.StrToInt(DetailRow["Quantity"].ToString());
                    ReceiptDetail.OffsetMoney  = 0.0m;
                    ReceiptDetail.OffsetMoney2 = 0.0m;

                    // 商品的单价和可优惠单价
                    string sql = @"SELECT * FROM Tb_Resources_Details 
                                   WHERE isnull(IsDelete,0)=0 AND IsRelease='是' AND IsStopRelease='否' AND ResourcesID=@ResourcesID";
                    Tb_Resources_Details ResourcesDetail = conn.Query <Tb_Resources_Details>(sql, new { ResourcesID = ReceiptDetail.ResourcesID }).FirstOrDefault();

                    // 商品存在,期间未失效
                    if (ResourcesDetail != null)
                    {
                        // 库存不足,跳过
                        if (ReceiptDetail.Quantity > ResourcesDetail.ResourcesCount)
                        {
                            continue;
                        }

                        ReceiptDetail.SalesPrice    = ResourcesDetail.ResourcesSalePrice;
                        ReceiptDetail.DiscountPrice = ResourcesDetail.ResourcesDisCountPrice;

                        bool IsInGroupBuyTime = false;

                        if (ResourcesDetail.IsGroupBuy == "是")
                        {
                            if (ResourcesDetail.GroupBuyStartDate.HasValue && ResourcesDetail.GroupBuyStartDate.Value <= DateTime.Now &&
                                ResourcesDetail.GroupBuyEndDate.HasValue && ResourcesDetail.GroupBuyEndDate.Value >= DateTime.Now)
                            {
                                IsInGroupBuyTime         = true;
                                ReceiptDetail.GroupPrice = ResourcesDetail.GroupBuyPrice;
                            }
                        }

                        // 1、商品单价
                        decimal price = 0.0m;

                        if (IsInGroupBuyTime)
                        {
                            price = (ResourcesDetail.GroupBuyPrice.Value - ResourcesDetail.ResourcesDisCountPrice) * ReceiptDetail.Quantity;
                        }
                        else
                        {
                            price = (ResourcesDetail.ResourcesSalePrice - ResourcesDetail.ResourcesDisCountPrice) * ReceiptDetail.Quantity;
                        }

                        // 2、商品规格追加价格
                        sql = "SELECT * FROM View_Tb_ResourcesSpecificationsPrice WHERE ShoppingId=@ShoppingId";
                        MobileSoft.Model.Resources.Tb_ResourcesSpecificationsPrice propertyInfo = conn.Query <MobileSoft.Model.Resources.Tb_ResourcesSpecificationsPrice>(sql, new { ShoppingId = DetailRow["ShoppingId"].ToString() }).FirstOrDefault();

                        if (propertyInfo != null && propertyInfo.Price.HasValue)
                        {
                            price = price + propertyInfo.Price.Value * ReceiptDetail.Quantity;
                        }

                        // 当前商品需要抵扣的金额
                        decimal currCouponMoney = 0.0m;

                        string isSupportCoupon = "";
                        // 3、商品支持抵扣券 并且 还有用户还有足够的优惠券余额
                        if (ResourcesDetail.IsSupportCoupon == "1")
                        {
                            isSupportCoupon = "是";
                        }
                        else
                        {
                            isSupportCoupon = "否";
                        }
                        if (isSupportCoupon == "是" &&
                            Receipt.IsUseCoupon.HasValue &&
                            Receipt.IsUseCoupon.Value > 0 &&
                            userCouponBalance > 0)
                        {
                            // 计算当前商品需要抵扣的金额
                            currCouponMoney = (ResourcesDetail.MaximumCouponMoney.HasValue ? ResourcesDetail.MaximumCouponMoney.Value : 0) * ReceiptDetail.Quantity;

                            if (bussBalance > 0)
                            {
                                if (bussBalance >= currCouponMoney)
                                {
                                    // 优惠券使用明细
                                    ReceiptDetail.OffsetMoney  = currCouponMoney;
                                    ReceiptDetail.OffsetMoney2 = 0.0m;

                                    totalUseCouponMoney += currCouponMoney;

                                    bussBalance       -= currCouponMoney;
                                    userCouponBalance -= currCouponMoney;
                                }
                                else
                                {
                                    // 先用专用券抵扣
                                    ReceiptDetail.OffsetMoney = bussBalance;

                                    totalUseCouponMoney += bussBalance;

                                    userCouponBalance -= bussBalance;

                                    // 专用券不够差额
                                    decimal differ = currCouponMoney - bussBalance;

                                    // 专用券不够,通用券余额大于0
                                    if (corpBalance > 0)
                                    {
                                        // 通用券足够抵扣
                                        if (corpBalance >= differ)
                                        {
                                            ReceiptDetail.OffsetMoney2 = differ;

                                            totalUseCouponMoney += differ;

                                            corpBalance       -= differ;
                                            userCouponBalance -= differ;
                                        }
                                        // 通用券不足以抵扣
                                        else
                                        {
                                            ReceiptDetail.OffsetMoney2 = corpBalance;

                                            totalUseCouponMoney += corpBalance;

                                            userCouponBalance -= corpBalance;
                                            corpBalance        = 0;
                                        }
                                    }
                                }
                            }
                            else
                            {
                                // 没有专用券,但是有通用券
                                if (corpBalance > 0)
                                {
                                    // 通用券足够抵扣
                                    if (corpBalance > currCouponMoney)
                                    {
                                        ReceiptDetail.OffsetMoney2 = currCouponMoney;

                                        totalUseCouponMoney += currCouponMoney;

                                        corpBalance       -= currCouponMoney;
                                        userCouponBalance -= currCouponMoney;
                                    }
                                    // 通用券不足以抵扣
                                    else
                                    {
                                        ReceiptDetail.OffsetMoney2 = corpBalance;

                                        totalUseCouponMoney += corpBalance;

                                        userCouponBalance -= corpBalance;
                                        corpBalance        = 0;
                                    }
                                }
                            }
                        }

                        // 订单商品总价追加
                        totalAmount += price;

                        // 插入订单内商品数据
                        conn.Insert(ReceiptDetail);
                    }

                    // 删除购物车
                    conn.Execute("UPDATE Tb_ShoppingCar SET IsDelete=1 WHERE Id=@ShoppingId", new { ShoppingId = ReceiptDetail.ShoppingId });
                }

                // 3、更新用户优惠券信息
                if (totalUseCouponMoney > 0)
                {
                    conn.Execute("proc_Resources_CouponBalance_Use",
                                 new { UserId = Receipt.UserId, CorpId = corpId, BussId = Receipt.BussId, UseMoney = totalUseCouponMoney },
                                 null, null, CommandType.StoredProcedure);
                }

                // ref参数处理
                IsOk         = true;
                Amount       = totalAmount;
                CouponAmount = totalUseCouponMoney;
                OrderId      = Receipt.OrderId;
            }

            return("生成订单成功");
        }
        /// <summary>
        /// 订单确认收款
        /// </summary>
        public static string ReceBusinessOrder(string OrderId, decimal realAmount)
        {
            try
            {
                String moblie = String.Empty;
                using (IDbConnection conn = new SqlConnection(ConnectionDb.GetBusinessConnection()))
                {
                    var               code    = RandomCodeHelper.CreateRandomCode(5);
                    string            sql     = "SELECT * FROM Tb_Charge_Receipt WHERE OrderId=@OrderId OR Id=@OrderId";
                    Tb_Charge_Receipt Receipt = conn.Query <Tb_Charge_Receipt>(sql, new { OrderId = OrderId }).SingleOrDefault();
                    if (Receipt.IsPay.ToString() == "已付款")
                    {
                        return("订单已付款");
                    }

                    //订单确认收款,收款动作写在下面
                    Receipt.IsPay          = "已付款";
                    Receipt.PayDate        = DateTime.Now;
                    Receipt.Method         = "支付宝";
                    Receipt.RealAmount     = realAmount;
                    Receipt.ExtractionCode = code;

                    //总价上面不包括运费
                    //Receipt.RealAmount = realAmount - Receipt.Freight;

                    //获取商家的手机号
                    String businessMoblieSql = "  SELECT  BussMobileTel FROM Tb_System_BusinessCorp WHERE bussId=@bussId ";
                    moblie = conn.QueryFirstOrDefault <String>(businessMoblieSql, new { bussId = Receipt.BussId });

                    // 对于没有使用优惠券的,直接设置Amount
                    if (Receipt.IsUseCoupon <= 0)
                    {
                        //GetLog().Info(new { realAmount = realAmount, RealAmount = Receipt.RealAmount });
                        conn.Execute("UPDATE Tb_Charge_Receipt SET IsPay=@IsPay,PayDate=@PayDate,Method='支付宝',Amount=@RealAmount,RealAmount=@RealAmount WHERE Id=@Id",
                                     new
                        {
                            IsPay      = Receipt.IsPay.ToString(),
                            PayDate    = Receipt.PayDate.ToString(),
                            RealAmount = Receipt.RealAmount,
                            Id         = Receipt.Id.ToString()
                        });

                        IEnumerable <Tb_Charge_ReceiptDetail> ReceiptDetails = conn.Query <Tb_Charge_ReceiptDetail>(@"SELECT * FROM Tb_Charge_ReceiptDetail WHERE ReceiptCode=@ReceiptCode", new { ReceiptCode = Receipt.Id });

                        foreach (Tb_Charge_ReceiptDetail item in ReceiptDetails)
                        {
                            Tb_Resources_Details resources = conn.Query <Tb_Resources_Details>("SELECT * FROM Tb_Resources_Details WHERE ResourcesID=@ResourcesID", new { ResourcesID = item.ResourcesID }).FirstOrDefault();

                            if (resources != null)
                            {
                                #region 根据购物车获取具体的某一个规格属性 ,并使用该规格属性上得价格
                                String sqlStr = @"SELECT A.Price,A.DiscountAmount,A.GroupBuyingPrice FROM  Tb_ResourcesSpecificationsPrice AS A
                                        INNER JOIN  (SELECT B.ResourcesID,C.PropertysId,C.SpecId FROM Tb_ShoppingCar AS B
                                        LEFT JOIN Tb_ShoppingDetailed AS C ON B.Id=C.ShoppingId
                                        WHERE B.Id IS NOT NULL AND B.Id=@Id) AS D  ON  D.ResourcesID=A.ResourcesID AND D.PropertysId =A.PropertyId AND D.SpecId=A.SpecId";

                                var praceInfo = conn.QueryFirstOrDefault(sqlStr, new { Id = item.ShoppingId });
                                if (null == praceInfo)
                                {
                                    return(JSONHelper.FromString(false, "商品没有规格属性"));
                                }

                                resources.ResourcesSalePrice     = (decimal)praceInfo.Price;
                                resources.GroupBuyPrice          = (decimal)praceInfo.GroupBuyingPrice;
                                resources.ResourcesDisCountPrice = (decimal)praceInfo.DiscountAmount;

                                #endregion

                                decimal detailAmount = 0.0m;
                                if (resources.IsGroupBuy == "是" && resources.GroupBuyEndDate.HasValue && resources.GroupBuyEndDate > DateTime.Now)
                                {
                                    detailAmount = resources.GroupBuyPrice.Value * item.Quantity;
                                }
                                else
                                {
                                    detailAmount = (resources.ResourcesSalePrice - resources.ResourcesDisCountPrice) * item.Quantity;
                                }

                                conn.Execute(@"UPDATE Tb_Charge_ReceiptDetail SET 
                                                SalesPrice=@SalesPrice,
                                                DiscountPrice=@DiscountPrice,
                                                GroupPrice=@GroupPrice,
                                                DetailAmount=@DetailAmount,
                                                OffsetMoney=0 
                                                WHERE ResourcesID=@ResourcesID AND RpdCode=@RpdCode",
                                             new
                                {
                                    SalesPrice    = resources.ResourcesSalePrice,
                                    DiscountPrice = resources.ResourcesDisCountPrice,
                                    GroupPrice    = ((
                                                         resources.IsGroupBuy == "是" &&
                                                         resources.GroupBuyEndDate.HasValue &&
                                                         resources.GroupBuyEndDate > DateTime.Now &&
                                                         resources.GroupBuyStartDate.HasValue &&
                                                         resources.GroupBuyStartDate <= DateTime.Now

                                                         ) ? resources.GroupBuyPrice : null),
                                    DetailAmount = detailAmount,
                                    ResourcesID  = resources.ResourcesID,
                                    RpdCode      = item.RpdCode
                                });

                                // 减库存
                                //conn.Execute("UPDATE Tb_Resources_Details SET ResourcesCount=(ResourcesCount-@Count) WHERE ResourcesID=@ResourcesID",
                                //    new { Count = AppGlobal.StrToLong(item.Quantity.ToString()), ResourcesID = resources.ResourcesID });



                                #region 减库存,减少规格参数得库存

                                //获取当前订单得所有商品
                                sql = $@"SELECT B.ResourcesID,C.PropertysId,C.SpecId,A.ReceiptCode,Quantity FROM Tb_Charge_ReceiptDetail AS A
                                        INNER JOIN Tb_ShoppingCar AS B ON A.ShoppingId=B.Id
                                        INNER JOIN Tb_ShoppingDetailed AS C ON A.ShoppingId=C.ShoppingId
                                        WHERE A.RpdCode=@Id";
                                var detail = conn.Query(sql, new { Id = item.RpdCode });

                                //逐个减少各个规格得参数,增加销售数量
                                StringBuilder updateStr = new StringBuilder();
                                foreach (var model in detail)
                                {
                                    updateStr.Append($"UPDATE Tb_ResourcesSpecificationsPrice SET Inventory= Inventory - {model.Quantity} ,SalesVolumes= SalesVolumes + {item.Quantity } WHERE BussId={Receipt.BussId} AND ResourcesID='{model.ResourcesID}' AND PropertyId= '{model.PropertysId}' AND SpecId='{model.SpecId}' ;");
                                }
                                var count = conn.Execute(updateStr.ToString());

                                //然后重新核对商品得数量,增加销售数量
                                if (count == detail.Count())
                                {
                                    conn.Execute($"UPDATE Tb_Resources_Details SET  ResourcesCount=(SELECT SUM(Inventory) AS Inventory FROM Tb_ResourcesSpecificationsPrice WHERE ResourcesID=@ResourcesID),ActualSalesVolumes = ActualSalesVolumes + {item.Quantity} WHERE ResourcesID  =@ResourcesID", new { ResourcesID = resources.ResourcesID });
                                }

                                #endregion
                            }
                        }
                    }
                    else
                    {
                        IEnumerable <Tb_Charge_ReceiptDetail> ReceiptDetails = conn.Query <Tb_Charge_ReceiptDetail>(@"SELECT * FROM Tb_Charge_ReceiptDetail WHERE ReceiptCode=@ReceiptCode", new { ReceiptCode = Receipt.Id });

                        IEnumerable <Tb_Resources_Details> resources = conn.Query <Tb_Resources_Details>(@"SELECT * FROM Tb_Resources_Details 
                            WHERE ResourcesID in(SELECT ResourcesID FROM Tb_Charge_ReceiptDetail WHERE ReceiptCode=@ReceiptCode)", new { ReceiptCode = Receipt.Id });

                        decimal totalAmount = 0.0m;

                        // 商品总价,此处计算的是不算优惠券时的总价
                        // 此时Tb_Charge_ReceiptDetail.DetailAmount保存的是未计算优惠券时的价格,最终价格需要另行计算
                        foreach (Tb_Resources_Details item in resources)
                        {
                            foreach (Tb_Charge_ReceiptDetail receiptDetail in ReceiptDetails)
                            {
                                if (receiptDetail.ResourcesID == item.ResourcesID)
                                {
                                    // 团购
                                    if (item.IsGroupBuy == "是" && item.GroupBuyEndDate.HasValue && item.GroupBuyEndDate > DateTime.Now)
                                    {
                                        receiptDetail.DetailAmount = (item.GroupBuyPrice.Value * receiptDetail.Quantity);
                                    }
                                    else
                                    {
                                        receiptDetail.DetailAmount = (item.ResourcesSalePrice - item.ResourcesDisCountPrice) * receiptDetail.Quantity;
                                    }
                                    totalAmount += receiptDetail.DetailAmount.Value;
                                    break;
                                }
                            }
                        }

                        conn.Execute("UPDATE Tb_Charge_Receipt SET IsPay=@IsPay,PayDate=@PayDate,Method='支付宝',Amount=@Amount,RealAmount=@RealAmount WHERE Id=@Id",
                                     new
                        {
                            IsPay      = Receipt.IsPay.ToString(),
                            PayDate    = Receipt.PayDate.ToString(),
                            Amount     = totalAmount,
                            RealAmount = Receipt.RealAmount,
                            Id         = Receipt.Id.ToString()
                        });

                        // 本次使用的抵扣券金额
                        //decimal couponMoney = totalAmount - realAmount;
                        //decimal tempUsedCouponMoney = 0.0m;// 暂时没有用处,判断本次使用的抵扣券是否和订单详细记录里面使用的抵扣券价格一样

                        foreach (Tb_Resources_Details item in resources)
                        {
                            foreach (Tb_Charge_ReceiptDetail receiptDetail in ReceiptDetails)
                            {
                                if (receiptDetail.ResourcesID == item.ResourcesID)
                                {
                                    // 更新订单详情表商品付费金额信息
                                    conn.Execute(@"UPDATE Tb_Charge_ReceiptDetail SET 
                                                SalesPrice=@SalesPrice,
                                                DiscountPrice=@DiscountPrice,
                                                GroupPrice=@GroupPrice,
                                                DetailAmount=@DetailAmount 
                                                WHERE ResourcesID=@ResourcesID AND ReceiptCode=@ReceiptCode",
                                                 new
                                    {
                                        SalesPrice    = item.ResourcesSalePrice,
                                        DiscountPrice = item.ResourcesDisCountPrice,
                                        GroupPrice    = ((item.IsGroupBuy == "是" && item.GroupBuyEndDate.HasValue && item.GroupBuyEndDate > DateTime.Now) ? item.GroupBuyPrice : null),
                                        DetailAmount  = receiptDetail.DetailAmount.Value - receiptDetail.OffsetMoney.Value,
                                        ResourcesID   = receiptDetail.ResourcesID,
                                        ReceiptCode   = receiptDetail.ReceiptCode
                                    });
                                    break;
                                }
                            }
                        }
                    }



                    //支付成功生成核销码
                    conn.Execute("UPDATE Tb_Charge_Receipt SET ExtractionCode=@ExtractionCode WHERE Id=@Id", new
                    {
                        ExtractionCode = code,
                        Id             = Receipt.Id.ToString()
                    });

                    //订单推送
                    //Orders.OrderInfoPush(Receipt.CorpId, Receipt.OrderId, moblie);
                    return("success");
                }
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }
Example #6
0
        /// <summary>
        /// 订单继续支付
        /// </summary>
        public string GoOnGenerateOrder(DataSet Ds)
        {
            DataRow Row = Ds.Tables[0].Rows[0];

            bool   IsBankOk     = false;
            bool   IsBusinessOk = true;//商家订单是否生成成功
            string OrderId      = Row["OrderId"].ToString();
            string prepay_str   = "";


            //取得上一次商家订单信息
            IDbConnection ConnOrder  = new SqlConnection(ConnectionDb.GetBusinessConnection());
            string        OrderQuery = "SELECT * FROM Tb_Charge_Receipt WHERE OrderId=@OrderId";

            Model.Model.Buss.Tb_Charge_Receipt TOrder = ConnOrder.Query <Model.Model.Buss.Tb_Charge_Receipt>(OrderQuery, new { OrderId = OrderId }).SingleOrDefault();

            if (TOrder != null)
            {
                IsBusinessOk = true;
            }
            string txnTime = TOrder.txnTime.ToString();
            string BussId  = TOrder.BussId.ToString();

            WxPayConfig wxPayConfig = GenerateConfig(BussId);

            if (null == wxPayConfig)
            {
                return(JSONHelper.FromString(false, "未配置证书文件"));
            }

            decimal realAmount = 0.0m;

            string sql = @"SELECT * FROM Tb_Charge_ReceiptDetail WHERE ReceiptCode=@ReceiptCode";

            IEnumerable <Tb_Charge_ReceiptDetail> ReceiptDetails = ConnOrder.Query <Tb_Charge_ReceiptDetail>(sql, new { ReceiptCode = TOrder.Id });

            foreach (Tb_Charge_ReceiptDetail item in ReceiptDetails)
            {
                // 计算此时应该多少钱
                sql = @"SELECT * FROM Tb_Resources_Details WHERE ResourcesID=@ResourcesID";
                Tb_Resources_Details resources = ConnOrder.Query <Tb_Resources_Details>(sql, new { ResourcesID = item.ResourcesID }).FirstOrDefault();

                if (resources != null)
                {
                    if (resources.IsGroupBuy == "是" && resources.GroupBuyEndDate.HasValue && resources.GroupBuyEndDate.Value > DateTime.Now)
                    {
                        realAmount += (resources.GroupBuyPrice.Value + item.Quantity);
                    }
                    else
                    {
                        realAmount += (resources.ResourcesSalePrice - resources.ResourcesDisCountPrice) * item.Quantity;
                    }

                    if (item.OffsetMoney.HasValue)
                    {
                        realAmount -= item.OffsetMoney.Value;
                    }

                    if (item.OffsetMoney2.HasValue)
                    {
                        realAmount -= item.OffsetMoney2.Value;
                    }
                }
            }

            if (IsBusinessOk == true)
            {
                sql = "SELECT * FROM Tb_System_BusinessCorp WHERE BussId=@BussId";
                Tb_System_BusinessCorp bussInfo = ConnOrder.Query <Tb_System_BusinessCorp>(sql, new { BussId = TOrder.BussId }).FirstOrDefault();

                //生成银行订单,返回银行流水号
                WxPayData Data = new WxPayData();

                string BankResult = GenerateBankOrder(BussId, OrderId, txnTime, (int)(realAmount * 100), ref IsBankOk, ref Data, wxPayConfig);
                if (IsBankOk == false)
                {
                    return(JSONHelper.FromString(false, BankResult));
                }
                else
                {
                    //更新订单银行流水号
                    IDbConnection Conn  = new SqlConnection(ConnectionDb.GetBusinessConnection());
                    string        Query = "UPDATE Tb_Charge_Receipt SET PrepayStr=@prepay_str WHERE OrderId = @OrderId ";
                    Conn.Execute(Query, new { prepay_str = prepay_str.ToString(), OrderId = OrderId });
                    //返回请求字符串

                    //向手机端返回银行记录
                    WxPayData result = new WxPayData();
                    result.SetValue("appid", Data.GetValue("appid"));
                    result.SetValue("partnerid", Data.GetValue("mch_id"));
                    result.SetValue("prepayid", Data.GetValue("prepay_id"));
                    result.SetValue("noncestr", Data.GetValue("nonce_str"));
                    result.SetValue("package", "Sign=WXPay");
                    result.SetValue("timestamp", (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000);
                    result.SetValue("sign", result.MakeSign());
                    return(JSONHelper.FromJsonString(true, result.ToJson()));
                }
            }
            return(JSONHelper.FromString(false, "生成订单失败"));
        }
Example #7
0
        /// <summary>
        /// 生成商家订单
        /// </summary>
        /// <param name="Ds"></param>
        /// <param name="BussId"></param>
        /// <param name="UserId"></param>
        /// <param name="txnTime"></param>
        /// <param name="IsOk"></param>
        /// <param name="Amount"></param>
        /// <param name="OrderId"></param>
        /// <returns></returns>
        public string GenerateBusinessOrder(DataSet Ds, string communityId, string BussId, string UserId, string txnTime, ref bool IsOk, ref string Amount, ref string OrderId, WxPayConfig wxPayConfig)
        {
            DataRow Row = Ds.Tables[0].Rows[0];

            IDbConnection Conn            = new SqlConnection(ConnectionDb.GetBusinessConnection());
            string        BusinessOrderId = Guid.NewGuid().ToString();

            //生成商家收款订单
            string            Id            = Guid.NewGuid().ToString();
            Tb_Charge_Receipt EntityReceipt = new Tb_Charge_Receipt();

            EntityReceipt.Id      = Id;
            EntityReceipt.BussId  = BussId.ToString();
            EntityReceipt.OrderId = BusinessOrderId;

            // 是否使用抵扣券
            if (Row.Table.Columns.Contains("UseCoupon"))
            {
                EntityReceipt.IsUseCoupon = AppGlobal.StrToInt(Row["UseCoupon"].ToString());
            }

            OrderId = BusinessOrderId;

            string ReceiptSign = "";//获得订单号
            //获取票据号
            DynamicParameters dp = new DynamicParameters();

            dp.Add("@Id", BussId);
            dp.Add("@OrderLength", 32);
            dp.Add("@Num", "", DbType.String, ParameterDirection.Output);
            using (IDbConnection IDbConn = new SqlConnection(ConnectionDb.GetBusinessConnection()))
            {
                IDbConn.Execute("Proc_GetOrderNum", dp, null, null, CommandType.StoredProcedure);
                ReceiptSign = dp.Get <string>("@Num");
            }
            EntityReceipt.ReceiptSign = ReceiptSign.ToString();

            EntityReceipt.UserId = UserId.ToString();


            IDbConnection ConnUnified = new SqlConnection(ConnectionDb.GetUnifiedConnectionString());
            string        QueryUser   = "******";
            Tb_User       EntityUser  = ConnUnified.Query <Tb_User>(QueryUser, new { UserId = UserId }).SingleOrDefault();

            //查找用户名称
            EntityReceipt.Name      = EntityUser.Name.ToString();
            EntityReceipt.Mobile    = EntityUser.Mobile.ToString();
            EntityReceipt.IsPay     = "未付款";
            EntityReceipt.IsReceive = "未收货";

            EntityReceipt.Amount         = 0;
            EntityReceipt.ReceiptMemo    = Row["ReceiptMemo"].ToString();
            EntityReceipt.ReceiptType    = "通用票据";
            EntityReceipt.ReceiptDate    = DateTime.Now;
            EntityReceipt.MchId          = wxPayConfig.MCHID;
            EntityReceipt.Partner        = wxPayConfig.MCHID;
            EntityReceipt.PrepayStr      = "";
            EntityReceipt.txnTime        = txnTime.ToString();
            EntityReceipt.ReturnCode     = "";
            EntityReceipt.ReturnMsg      = "";
            EntityReceipt.IsDeliver      = "未发货";
            EntityReceipt.Express        = "";
            EntityReceipt.ExpressNum     = "";
            EntityReceipt.DeliverAddress = "";

            EntityReceipt.PayDate = DateTime.Now;

            EntityReceipt.IsDelete = 0;

            Conn.Insert(EntityReceipt);

            if (!string.IsNullOrEmpty(communityId))
            {
                Conn.Execute("UPDATE Tb_Charge_Receipt SET CommunityId=@CommunityId WHERE ID=@IID",
                             new { CommunityId = communityId, IID = EntityReceipt.Id });
            }

            decimal TotalAmount = 0.00M;

            //收成商家收款明细

            foreach (DataRow DetailRow in Ds.Tables[1].Rows)
            {
                Tb_Charge_ReceiptDetail EntityReceiptDetail = new Tb_Charge_ReceiptDetail();
                EntityReceiptDetail.RpdCode     = Guid.NewGuid().ToString();
                EntityReceiptDetail.ReceiptCode = Id;
                EntityReceiptDetail.ResourcesID = DetailRow["Id"].ToString();
                EntityReceiptDetail.Quantity    = DataSecurity.StrToInt(DetailRow["Quantity"].ToString());

                string QueryResourcesSql = "SELECT * FROM Tb_Resources_Details WHERE ResourcesID=@ResourcesID";
                Tb_Resources_Details T   = Conn.Query <Tb_Resources_Details>(QueryResourcesSql, new { ResourcesID = DetailRow["Id"].ToString() }).SingleOrDefault();

                EntityReceiptDetail.SalesPrice    = T.ResourcesSalePrice;
                EntityReceiptDetail.DiscountPrice = T.ResourcesDisCountPrice;
                EntityReceiptDetail.GroupPrice    = T.GroupBuyPrice;
                EntityReceiptDetail.DetailAmount  = T.ResourcesSalePrice - T.ResourcesDisCountPrice;
                EntityReceiptDetail.RpdMemo       = DetailRow["RpdMemo"].ToString();
                Conn.Insert(EntityReceiptDetail);
                //计算订单的总金额
                TotalAmount = TotalAmount + DataSecurity.StrToDecimal(EntityReceiptDetail.DetailAmount.ToString());
            }

            //更新订单总金额
            EntityReceipt.Amount = TotalAmount;
            Amount = Convert.ToString(TotalAmount * 100);
            IsOk   = true;
            Conn.Update(EntityReceipt);
            return("生成订单成功");
        }
Example #8
0
        /// <summary>
        /// 订单确认收款
        /// </summary>
        /// <param name="OrderId"></param>
        /// <returns></returns>
        public static string ReceBusinessOrder(string OrderId, int realAmount)
        {
            try
            {
                using (IDbConnection conn = new SqlConnection(ConnectionDb.GetBusinessConnection()))
                {
                    string            sql     = "SELECT * FROM Tb_Charge_Receipt WHERE OrderId=@OrderId";
                    Tb_Charge_Receipt Receipt = conn.Query <Tb_Charge_Receipt>(sql, new { OrderId = OrderId }).SingleOrDefault();
                    if (Receipt.IsPay.ToString() == "已付款")
                    {
                        return("订单已付款");
                    }

                    //订单确认收款,收款动作写在下面
                    Receipt.IsPay      = "已付款";
                    Receipt.PayDate    = DateTime.Now;
                    Receipt.Method     = "微信";
                    Receipt.RealAmount = realAmount / 100.0m;

                    // 对于没有使用优惠券的,直接设置Amount
                    if (Receipt.IsUseCoupon <= 0)
                    {
                        conn.Execute("UPDATE Tb_Charge_Receipt SET IsPay=@IsPay,PayDate=@PayDate,Method='支付宝',Amount=@RealAmount,RealAmount=@RealAmount WHERE Id=@Id",
                                     new
                        {
                            IsPay      = Receipt.IsPay.ToString(),
                            PayDate    = Receipt.PayDate.ToString(),
                            RealAmount = Receipt.RealAmount,
                            Id         = Receipt.Id.ToString()
                        });

                        IEnumerable <Tb_Charge_ReceiptDetail> ReceiptDetails = conn.Query <Tb_Charge_ReceiptDetail>(@"SELECT * FROM Tb_Charge_ReceiptDetail WHERE ReceiptCode=@ReceiptCode", new { ReceiptCode = Receipt.Id });

                        foreach (Tb_Charge_ReceiptDetail item in ReceiptDetails)
                        {
                            Tb_Resources_Details resources = conn.Query <Tb_Resources_Details>("SELECT * FROM Tb_Resources_Details WHERE ResourcesID=@ResourcesID", new { ResourcesID = item.ResourcesID }).FirstOrDefault();

                            if (resources != null)
                            {
                                decimal detailAmount = 0.0m;
                                if (resources.IsGroupBuy == "是" && resources.GroupBuyEndDate.HasValue && resources.GroupBuyEndDate > DateTime.Now)
                                {
                                    detailAmount = resources.GroupBuyPrice.Value * item.Quantity;
                                }
                                else
                                {
                                    detailAmount = (resources.ResourcesSalePrice - resources.ResourcesDisCountPrice) * item.Quantity;
                                }

                                conn.Execute(@"UPDATE Tb_Charge_ReceiptDetail SET 
                                                SalesPrice=@SalesPrice,
                                                DiscountPrice=@DiscountPrice,
                                                GroupPrice=@GroupPrice,
                                                DetailAmount=@DetailAmount,
                                                OffsetMoney=0 
                                                WHERE ResourcesID=@ResourcesID AND ReceiptCode=@ReceiptCode",
                                             new
                                {
                                    SalesPrice    = resources.ResourcesSalePrice,
                                    DiscountPrice = resources.ResourcesDisCountPrice,
                                    GroupPrice    = ((resources.IsGroupBuy == "是" && resources.GroupBuyEndDate.HasValue && resources.GroupBuyEndDate > DateTime.Now) ? resources.GroupBuyPrice : null),
                                    DetailAmount  = detailAmount,
                                    ResourcesID   = resources.ResourcesID,
                                    ReceiptCode   = item.ReceiptCode
                                });

                                // 减库存
                                conn.Execute("UPDATE Tb_Resources_Details SET ResourcesCount=(ResourcesCount-@Count) WHERE ResourcesID=@ResourcesID",
                                             new { Count = AppGlobal.StrToLong(item.Quantity.ToString()), ResourcesID = resources.ResourcesID });
                            }
                        }
                    }
                    else
                    {
                        IEnumerable <Tb_Charge_ReceiptDetail> ReceiptDetails = conn.Query <Tb_Charge_ReceiptDetail>(@"SELECT * FROM Tb_Charge_ReceiptDetail WHERE ReceiptCode=@ReceiptCode", new { ReceiptCode = Receipt.Id });

                        IEnumerable <Tb_Resources_Details> resources = conn.Query <Tb_Resources_Details>(@"SELECT * FROM Tb_Resources_Details 
                            WHERE ResourcesID in(SELECT ResourcesID FROM Tb_Charge_ReceiptDetail WHERE ReceiptCode=@ReceiptCode)", new { ReceiptCode = Receipt.Id });

                        decimal totalAmount = 0.0m;

                        // 商品总价,此处计算的是不算优惠券时的总价
                        // 此时Tb_Charge_ReceiptDetail.DetailAmount保存的是未计算优惠券时的价格,最终价格需要另行计算
                        foreach (Tb_Resources_Details item in resources)
                        {
                            foreach (Tb_Charge_ReceiptDetail receiptDetail in ReceiptDetails)
                            {
                                if (receiptDetail.ResourcesID == item.ResourcesID)
                                {
                                    // 团购
                                    if (item.IsGroupBuy == "是" && item.GroupBuyEndDate.HasValue && item.GroupBuyEndDate > DateTime.Now)
                                    {
                                        receiptDetail.DetailAmount = (item.GroupBuyPrice.Value * receiptDetail.Quantity);
                                    }
                                    else
                                    {
                                        receiptDetail.DetailAmount = (item.ResourcesSalePrice - item.ResourcesDisCountPrice) * receiptDetail.Quantity;
                                    }
                                    totalAmount += receiptDetail.DetailAmount.Value;
                                    break;
                                }
                            }
                        }

                        conn.Execute("UPDATE Tb_Charge_Receipt SET IsPay=@IsPay,PayDate=@PayDate,Method='微信',Amount=@Amount,RealAmount=@RealAmount WHERE Id=@Id",
                                     new
                        {
                            IsPay      = Receipt.IsPay.ToString(),
                            PayDate    = Receipt.PayDate.ToString(),
                            Amount     = totalAmount,
                            RealAmount = Receipt.RealAmount,
                            Id         = Receipt.Id.ToString()
                        });

                        // 本次使用的抵扣券金额
                        //decimal couponMoney = totalAmount - realAmount;
                        //decimal tempUsedCouponMoney = 0.0m;// 暂时没有用处,判断本次使用的抵扣券是否和订单详细记录里面使用的抵扣券价格一样

                        foreach (Tb_Resources_Details item in resources)
                        {
                            foreach (Tb_Charge_ReceiptDetail receiptDetail in ReceiptDetails)
                            {
                                if (receiptDetail.ResourcesID == item.ResourcesID)
                                {
                                    //if (receiptDetail.OffsetMoney.HasValue && receiptDetail.OffsetMoney.Value > 0)
                                    //{
                                    //    tempUsedCouponMoney += receiptDetail.OffsetMoney.Value;
                                    //}
                                    //if (receiptDetail.OffsetMoney2.HasValue && receiptDetail.OffsetMoney2.Value > 0)
                                    //{
                                    //    tempUsedCouponMoney += receiptDetail.OffsetMoney2.Value;
                                    //}
                                    //else
                                    //{
                                    //    receiptDetail.OffsetMoney = 0.0m;
                                    //}

                                    // 更新订单详情表商品付费金额信息
                                    conn.Execute(@"UPDATE Tb_Charge_ReceiptDetail SET 
                                                SalesPrice=@SalesPrice,
                                                DiscountPrice=@DiscountPrice,
                                                GroupPrice=@GroupPrice,
                                                DetailAmount=@DetailAmount 
                                                WHERE ResourcesID=@ResourcesID AND ReceiptCode=@ReceiptCode",
                                                 new
                                    {
                                        SalesPrice    = item.ResourcesSalePrice,
                                        DiscountPrice = item.ResourcesDisCountPrice,
                                        GroupPrice    = ((item.IsGroupBuy == "是" && item.GroupBuyEndDate.HasValue && item.GroupBuyEndDate > DateTime.Now) ? item.GroupBuyPrice : null),
                                        DetailAmount  = receiptDetail.DetailAmount.Value - receiptDetail.OffsetMoney.Value,
                                        ResourcesID   = receiptDetail.ResourcesID,
                                        ReceiptCode   = receiptDetail.ReceiptCode
                                    });

                                    // 减库存
                                    conn.Execute("UPDATE Tb_Resources_Details SET ResourcesCount=(ResourcesCount-@Count) WHERE ResourcesID=@ResourcesID",
                                                 new { Count = AppGlobal.StrToLong(receiptDetail.Quantity.ToString()), ResourcesID = item.ResourcesID });

                                    break;
                                }
                            }
                        }
                    }
                    return("success");
                }
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }
Example #9
0
        /// <summary>
        /// 生成商家订单
        /// </summary>
        public string SubmitOrder_Changcheng(DataSet Ds)
        {
            DataRow Row = Ds.Tables[0].Rows[0];

            string txnTime = DateTime.Now.ToString("yyyyMMddHHmmss");

            string BussId         = Row["BussId"].ToString();
            string UserId         = Row["UserId"].ToString();
            string Name           = Row["Name"].ToString();
            string Mobile         = Row["Mobile"].ToString();
            string DeliverAddress = Row["DeliverAddress"].ToString();

            int dispatchingType = 0;

            if (Row.Table.Columns.Contains("DispatchingType") && !string.IsNullOrEmpty(Row["DispatchingType"].ToString()))
            {
                int.TryParse(Row["DispatchingType"].ToString(), out dispatchingType);
            }

            String expectedDeliveryTime = String.Empty;

            if (Row.Table.Columns.Contains("ExpectedDeliveryTime") && !string.IsNullOrEmpty(Row["ExpectedDeliveryTime"].ToString()))
            {
                expectedDeliveryTime = Row["ExpectedDeliveryTime"].ToString();
            }

            String province = String.Empty;

            if (Row.Table.Columns.Contains("Province") && !string.IsNullOrEmpty(Row["Province"].ToString()))
            {
                province = Row["Province"].ToString();
            }

            decimal freight = 0M;

            if (Row.Table.Columns.Contains("Freight") && !string.IsNullOrEmpty(Row["Freight"].ToString()) && decimal.TryParse(Row["Freight"].ToString(), out freight))
            {
            }

            int?   corpId      = null;
            string communityId = null;

            if (Row.Table.Columns.Contains("CorpId") && !string.IsNullOrEmpty(Row["CorpId"].ToString()))
            {
                corpId = AppGlobal.StrToInt(Row["CorpId"].ToString());
            }
            if (Row.Table.Columns.Contains("CommunityId") && !string.IsNullOrEmpty(Row["CommunityId"].ToString()))
            {
                communityId = Row["CommunityId"].ToString();
            }

            var iid = Guid.NewGuid().ToString();
            var alipayBusinessOrder_Changcheng = new AlipayBusinessOrder_Changcheng();
            var config = alipayBusinessOrder_Changcheng.GetGenerateConfig(BussId);
            // 生成商家收款订单
            Tb_Charge_Receipt Receipt = new Tb_Charge_Receipt
            {
                Id              = iid,
                CorpId          = corpId,
                BussId          = BussId.ToString(),
                UserId          = UserId,
                OrderId         = Guid.NewGuid().ToString(),
                ReceiptSign     = DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(1000, 9999).ToString(),
                Name            = Name,
                IsPay           = "未付款",
                IsReceive       = "未收货",
                IsDeliver       = "未发货",
                ReceiptMemo     = Row["ReceiptMemo"].ToString(),
                ReceiptType     = "通用票据",
                ReceiptDate     = DateTime.Now,
                PayDate         = null,
                MchId           = config == null ? "" : config.partner,
                Partner         = config == null ? "" : config.partner,
                PrepayStr       = "",
                txnTime         = txnTime.ToString(),
                ReturnCode      = "",
                ReturnMsg       = "",
                Express         = "",
                ExpressNum      = "",
                Mobile          = Mobile,                    //联系电话
                DeliverAddress  = province + DeliverAddress, //收货地址
                IsDelete        = 0,
                CommunityID     = communityId,
                DispatchingType = dispatchingType,
                //Freight = freight//运费
            };

            if (dispatchingType != 0 && dispatchingType == (int)BusiinessDispatchingEnum.Dispatching)
            {
                Receipt.RequestDeliveryTime = expectedDeliveryTime;
            }
            if (dispatchingType != 0 && dispatchingType == (int)BusiinessDispatchingEnum.TakeTheir)
            {
                Receipt.EstimatedPickUpTime = expectedDeliveryTime;
            }


            // 是否使用优惠券抵扣
            if (Row.Table.Columns.Contains("UseCoupon"))
            {
                Receipt.IsUseCoupon = AppGlobal.StrToInt(Row["UseCoupon"].ToString());
            }

            List <String> shoppingIdS = new List <String>();

            foreach (DataRow DetailRow in Ds.Tables["Product"].Rows)
            {
                shoppingIdS.Add(DetailRow["ShoppingId"].ToString());
            }

            if (dispatchingType == 1)
            {
                var fee = PMSFreight.GetGetFreight(province, shoppingIdS);
                if (fee == -2)
                {
                    return(JSONHelper.FromString(false, "对不起,您的收货地址不在配送范围内"));
                }
                if (fee >= 0 && fee != freight)
                {
                    return(JSONHelper.FromString(false, "运费不统一"));
                }
                Receipt.Freight = fee;
            }

            String moblie = String.Empty;

            using (var conn = new SqlConnection(PubConstant.BusinessContionString))
            {
                conn.Open();
                var trans = conn.BeginTransaction();

                try
                {
                    // 保存订单信息
                    conn.Insert(Receipt, trans);

                    //获取商家的手机号
                    String businessMoblieSql = "  SELECT  BussMobileTel FROM Tb_System_BusinessCorp WHERE bussId=@bussId ";
                    moblie = conn.QueryFirstOrDefault <String>(businessMoblieSql, new { bussId = BussId }, trans);

                    if (!string.IsNullOrEmpty(communityId))
                    {
                        conn.Execute("UPDATE Tb_Charge_Receipt SET CommunityId=@CommunityId WHERE ID=@IID",
                                     new { CommunityId = communityId, IID = iid }, trans);
                    }

                    /*
                     *  计算此时的订单金额,此时不应该保存商品的价格信息;
                     *  如果用户不付款,且订单未取消期间,商家更改了商品单价或可优惠价或规格追加价,付款时则需要重新计算
                     *
                     *  1、获取用户在该商家的可用优惠券余额
                     *  2、获取商品此时的单价和可优惠价,对应的规格型号的追加单价
                     *  3、计算当前订单内的商品是否支持优惠券抵扣,如果支持,计算最多能抵扣的价格并更新优惠券余额
                     */

                    // 1、获取用户优惠券余额
                    dynamic balanceInfo = conn.Query <dynamic>(@"SELECT isnull(Balance1,0) AS Balance1,isnull(Balance2,0) AS Balance2
                    FROM
                    (SELECT Balance1 = (SELECT Balance FROM Tb_Resources_CouponBalance
                        WHERE UserId = @UserId
                        AND CorpId = @CorpId AND BussId = @BussId),
                        Balance2 = (SELECT Balance FROM Tb_Resources_CouponBalance
                            WHERE UserId = @UserId
                            AND CorpId = @CorpId AND BussId IS NULL)) as x; ",
                                                               new { UserId = Receipt.UserId, CorpId = corpId, BussId = Receipt.BussId }, trans).FirstOrDefault();

                    decimal totalAmount         = 0.0m; // 商品总价
                    decimal userCouponBalance   = 0.0m; // 用户可用优惠券余额
                    decimal totalUseCouponMoney = 0.0m; // 当前能使用优惠券抵扣的钱

                    decimal bussBalance = 0.0m;         // 商家专用券余额
                    decimal corpBalance = 0.0m;         // 物管通用券余额

                    if (balanceInfo != null)
                    {
                        bussBalance       = balanceInfo.Balance1;
                        corpBalance       = balanceInfo.Balance2;
                        userCouponBalance = bussBalance + corpBalance;
                    }

                    // 2、获取商品价格信息
                    foreach (DataRow DetailRow in Ds.Tables["Product"].Rows)
                    {
                        // 订单商品详情
                        Tb_Charge_ReceiptDetail ReceiptDetail = new Tb_Charge_ReceiptDetail();
                        ReceiptDetail.RpdCode      = Guid.NewGuid().ToString();
                        ReceiptDetail.ReceiptCode  = Receipt.Id;
                        ReceiptDetail.ShoppingId   = DetailRow["ShoppingId"].ToString();
                        ReceiptDetail.ResourcesID  = DetailRow["Id"].ToString();
                        ReceiptDetail.RpdMemo      = DetailRow["RpdMemo"].ToString();
                        ReceiptDetail.Quantity     = DataSecurity.StrToInt(DetailRow["Quantity"].ToString());
                        ReceiptDetail.OffsetMoney  = 0.0m;
                        ReceiptDetail.OffsetMoney2 = 0.0m;

                        decimal specificationMoney = 0M;


                        // 商品的单价和可优惠单价
                        string sql = @"SELECT * FROM Tb_Resources_Details 
                        WHERE isnull(IsDelete, 0) = 0 AND IsRelease = '是' AND IsStopRelease = '否' AND ResourcesID = @ResourcesID";

                        Tb_Resources_Details ResourcesDetail = conn.Query <Tb_Resources_Details>(sql, new
                        {
                            ResourcesID = ReceiptDetail.ResourcesID
                        }, trans).FirstOrDefault();

                        #region 根据购物车获取具体的某一个规格属性 ,并使用该规格属性上得价格
                        String sqlStr = @"SELECT A.Price,A.DiscountAmount,A.GroupBuyingPrice FROM  Tb_ResourcesSpecificationsPrice AS A
                                        INNER JOIN  (SELECT B.ResourcesID,C.PropertysId,C.SpecId FROM Tb_ShoppingCar AS B
                                        LEFT JOIN Tb_ShoppingDetailed AS C ON B.Id=C.ShoppingId
                                        WHERE B.Id IS NOT NULL AND B.Id=@Id) AS D  ON  D.ResourcesID=A.ResourcesID AND D.PropertysId =A.PropertyId AND D.SpecId=A.SpecId";

                        var praceInfo = conn.QueryFirstOrDefault(sqlStr, new { Id = DetailRow["ShoppingId"].ToString() }, trans);
                        if (null == praceInfo)
                        {
                            return(JSONHelper.FromString(false, "商品没有规格属性"));
                        }

                        ResourcesDetail.ResourcesSalePrice     = (decimal)praceInfo.Price;
                        ResourcesDetail.GroupBuyPrice          = (decimal)praceInfo.GroupBuyingPrice;
                        ResourcesDetail.ResourcesDisCountPrice = (decimal)praceInfo.DiscountAmount;

                        #endregion

                        // 商品存在,期间未失效
                        if (ResourcesDetail != null)
                        {
                            //现在判断库存 修改为判断规格库存
                            sql = @"SELECT ISNULL(Inventory,0) FROM  Tb_ResourcesSpecificationsPrice AS A
                                    INNER JOIN  (SELECT B.ResourcesID,C.PropertysId,C.SpecId FROM Tb_ShoppingCar AS B
                                    LEFT JOIN Tb_ShoppingDetailed AS C ON B.Id=C.ShoppingId
                                    WHERE B.Id IS NOT NULL AND B.Id=@Id) AS D  ON  D.ResourcesID=A.ResourcesID AND D.PropertysId =A.PropertyId AND D.SpecId=A.SpecId;";
                            var inventory = conn.QueryFirstOrDefault <decimal>(sql, new { Id = ReceiptDetail.ShoppingId }, trans);
                            // 库存不足,跳过
                            if (ReceiptDetail.Quantity > inventory)
                            {
                                return(JSONHelper.FromString(false, "部分商品库存不足"));
                            }

                            //String sqlPrice = @"select b.Price from ( select SpecId,PropertysId from Tb_ShoppingDetailed where  ShoppingId=@ShoppingId) AS A
                            //INNER JOIN (SELECT Price,SpecId,PropertyId FROM View_Tb_ResourcesSpecificationsPrice_Filter  WHERE  ISNULL(ISDELETE,0)=0 AND  SpecId IS NOT NULL AND BussId=@BussId AND ResourcesID =@ResourcesID  ) AS  B  ON B.SpecId=A.SpecId AND B.PropertyId=A.PropertysId";
                            //var priceInfo = conn.QueryFirstOrDefault<decimal?>(sqlPrice, new { ShoppingId = ReceiptDetail.ShoppingId, BussId = BussId, ResourcesID = ReceiptDetail.ResourcesID }, trans);

                            //if (priceInfo.HasValue)
                            //{
                            //    ReceiptDetail.SalesPrice = priceInfo.Value;
                            //    ResourcesDetail.ResourcesSalePrice = priceInfo.Value;
                            //}
                            //else
                            //{
                            //    ReceiptDetail.SalesPrice = ResourcesDetail.ResourcesSalePrice;
                            //}
                            ReceiptDetail.SalesPrice    = ResourcesDetail.ResourcesSalePrice;
                            ReceiptDetail.DiscountPrice = ResourcesDetail.ResourcesDisCountPrice;
                            bool IsInGroupBuyTime = false;

                            if (ResourcesDetail.IsGroupBuy == "是")
                            {
                                if (ResourcesDetail.GroupBuyStartDate.HasValue && ResourcesDetail.GroupBuyStartDate.Value <= DateTime.Now &&
                                    ResourcesDetail.GroupBuyEndDate.HasValue && ResourcesDetail.GroupBuyEndDate.Value >= DateTime.Now)
                                {
                                    IsInGroupBuyTime         = true;
                                    ReceiptDetail.GroupPrice = ResourcesDetail.GroupBuyPrice;
                                }
                            }

                            // 1、商品单价
                            decimal price = 0.0m;
                            if (IsInGroupBuyTime)
                            {
                                //团购价不算优惠价格
                                price = (ResourcesDetail.GroupBuyPrice.Value) * ReceiptDetail.Quantity;
                            }
                            else
                            {
                                price = (ResourcesDetail.ResourcesSalePrice - ResourcesDetail.ResourcesDisCountPrice) * ReceiptDetail.Quantity;
                            }

                            // 2、商品规格追加价格

                            /*
                             * 时间:2020-06-03  20-11
                             * 修改人:翟国雄
                             * 逻辑 现在确定价格之后不再增加所谓得规格价格 如果有规格 直接使用规格价格减去优惠价格即可
                             */


                            // 当前商品需要抵扣的金额
                            decimal currCouponMoney = 0.0m;

                            string isSupportCoupon = "";
                            // 3、商品支持抵扣券 并且 还有用户还有足够的优惠券余额
                            if (ResourcesDetail.IsSupportCoupon == "1")
                            {
                                isSupportCoupon = "是";
                            }
                            else
                            {
                                isSupportCoupon = "否";
                            }
                            if (isSupportCoupon == "是" &&
                                Receipt.IsUseCoupon.HasValue &&
                                Receipt.IsUseCoupon.Value > 0 &&
                                userCouponBalance > 0)
                            {
                                // 计算当前商品需要抵扣的金额
                                currCouponMoney = (ResourcesDetail.MaximumCouponMoney.HasValue ? ResourcesDetail.MaximumCouponMoney.Value : 0) * ReceiptDetail.Quantity;

                                if (bussBalance > 0)
                                {
                                    if (bussBalance >= currCouponMoney)
                                    {
                                        // 优惠券使用明细
                                        ReceiptDetail.OffsetMoney  = currCouponMoney;
                                        ReceiptDetail.OffsetMoney2 = 0.0m;

                                        totalUseCouponMoney += currCouponMoney;

                                        bussBalance       -= currCouponMoney;
                                        userCouponBalance -= currCouponMoney;
                                    }
                                    else
                                    {
                                        // 先用专用券抵扣
                                        ReceiptDetail.OffsetMoney = bussBalance;

                                        totalUseCouponMoney += bussBalance;

                                        userCouponBalance -= bussBalance;

                                        // 专用券不够差额
                                        decimal differ = currCouponMoney - bussBalance;

                                        // 专用券不够,通用券余额大于0
                                        if (corpBalance > 0)
                                        {
                                            // 通用券足够抵扣
                                            if (corpBalance >= differ)
                                            {
                                                ReceiptDetail.OffsetMoney2 = differ;

                                                totalUseCouponMoney += differ;

                                                corpBalance       -= differ;
                                                userCouponBalance -= differ;
                                            }
                                            // 通用券不足以抵扣
                                            else
                                            {
                                                ReceiptDetail.OffsetMoney2 = corpBalance;

                                                totalUseCouponMoney += corpBalance;

                                                userCouponBalance -= corpBalance;
                                                corpBalance        = 0;
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    // 没有专用券,但是有通用券
                                    if (corpBalance > 0)
                                    {
                                        // 通用券足够抵扣
                                        if (corpBalance > currCouponMoney)
                                        {
                                            ReceiptDetail.OffsetMoney2 = currCouponMoney;

                                            totalUseCouponMoney += currCouponMoney;

                                            corpBalance       -= currCouponMoney;
                                            userCouponBalance -= currCouponMoney;
                                        }
                                        // 通用券不足以抵扣
                                        else
                                        {
                                            ReceiptDetail.OffsetMoney2 = corpBalance;

                                            totalUseCouponMoney += corpBalance;

                                            userCouponBalance -= corpBalance;
                                            corpBalance        = 0;
                                        }
                                    }
                                }
                            }

                            //if (priceInfo.HasValue)
                            //{
                            //    ReceiptDetail.OffsetMoney = ReceiptDetail.OffsetMoney + specificationMoney;
                            //}

                            // 订单商品总价追加
                            totalAmount += price;

                            // 插入订单内商品数据
                            conn.Insert(ReceiptDetail, trans);
                        }

                        // 删除购物车
                        conn.Execute("UPDATE Tb_ShoppingCar SET IsDelete=1 WHERE Id=@ShoppingId",
                                     new
                        {
                            ShoppingId = ReceiptDetail.ShoppingId
                        }, trans);
                    }

                    // 3、更新用户优惠券信息
                    if (totalUseCouponMoney > 0)
                    {
                        conn.Execute("proc_Resources_CouponBalance_Use",
                                     new { UserId = Receipt.UserId, CorpId = corpId, BussId = Receipt.BussId, UseMoney = totalUseCouponMoney }, trans, null, CommandType.StoredProcedure);
                    }
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    return(JSONHelper.FromString(false, ex.Message + Environment.NewLine + ex.StackTrace));
                }
            }

            //订单信息商家推送
            //OrderInfoPush(corpId, Receipt.Id, moblie);

            return(new ApiResult(true, new { Id = Receipt.Id, OrderId = Receipt.OrderId }).toJson());
        }
Example #10
0
        /// <summary>
        /// 订单继续支付
        /// </summary>
        public string GoOnGenerateOrder(DataSet Ds)
        {
            DataRow Row = Ds.Tables[0].Rows[0];

            bool   IsBankOk     = false;
            bool   IsBusinessOk = true;//商家订单是否生成成功
            string OrderId      = Row["OrderId"].ToString();
            string prepay_str   = "";


            //取得上一次商家订单信息
            IDbConnection ConnOrder  = new SqlConnection(ConnectionDb.GetBusinessConnection());
            string        OrderQuery = "SELECT * FROM Tb_Charge_Receipt WHERE OrderId=@OrderId";

            Model.Model.Buss.Tb_Charge_Receipt TOrder = ConnOrder.Query <Model.Model.Buss.Tb_Charge_Receipt>(OrderQuery, new { OrderId = OrderId }).SingleOrDefault();

            if (TOrder != null)
            {
                IsBusinessOk = true;
            }
            string txnTime  = TOrder.txnTime.ToString();
            string BussId   = TOrder.BussId.ToString();
            bool   IsConfig = GenerateConfig(BussId);

            if (IsConfig == false)
            {
                return(JSONHelper.FromString(false, "未配置证书文件"));
            }

            decimal realAmount = 0.0m;

            string sql = @"SELECT * FROM Tb_Charge_ReceiptDetail WHERE ReceiptCode=@ReceiptCode";

            IEnumerable <Tb_Charge_ReceiptDetail> ReceiptDetails = ConnOrder.Query <Tb_Charge_ReceiptDetail>(sql, new { ReceiptCode = TOrder.Id });

            foreach (Tb_Charge_ReceiptDetail item in ReceiptDetails)
            {
                // 计算此时应该多少钱
                sql = @"SELECT * FROM Tb_Resources_Details WHERE ResourcesID=@ResourcesID";
                Tb_Resources_Details resources = ConnOrder.Query <Tb_Resources_Details>(sql, new { ResourcesID = item.ResourcesID }).FirstOrDefault();

                if (resources != null)
                {
                    if (resources.IsGroupBuy == "是" && resources.GroupBuyEndDate.HasValue && resources.GroupBuyEndDate.Value > DateTime.Now)
                    {
                        realAmount += (resources.GroupBuyPrice.Value + item.Quantity);
                    }
                    else
                    {
                        realAmount += (resources.ResourcesSalePrice - resources.ResourcesDisCountPrice) * item.Quantity;
                    }

                    if (item.OffsetMoney.HasValue)
                    {
                        realAmount -= item.OffsetMoney.Value;
                    }

                    if (item.OffsetMoney2.HasValue)
                    {
                        realAmount -= item.OffsetMoney2.Value;
                    }
                }
            }

            if (IsBusinessOk == true)
            {
                sql = "SELECT * FROM Tb_System_BusinessCorp WHERE BussId=@BussId";
                Tb_System_BusinessCorp bussInfo = ConnOrder.Query <Tb_System_BusinessCorp>(sql, new { BussId = TOrder.BussId }).FirstOrDefault();

                //生成预支付单,并返回订单ID
                string BankResult = GenerateBankOrder(BussId, OrderId, txnTime, realAmount, ref IsBankOk, ref prepay_str, bussInfo.BussName + "订单,共" + ReceiptDetails.Count() + "种商品");
                if (IsBankOk == false)
                {
                    return(JSONHelper.FromString(false, BankResult));
                }
                else
                {
                    //更新订单银行流水号
                    IDbConnection Conn  = new SqlConnection(ConnectionDb.GetBusinessConnection());
                    string        Query = "UPDATE Tb_Charge_Receipt SET PrepayStr=@prepay_str WHERE OrderId = @OrderId ";
                    Conn.Execute(Query, new { prepay_str = prepay_str.ToString(), OrderId = OrderId });
                    //返回请求字符串
                    return(JSONHelper.FromJsonString(true, prepay_str));
                }
            }
            return(JSONHelper.FromString(false, "生成订单失败"));
        }