Beispiel #1
0
        public void ProcessRequest(HttpContext context)
        {
            string     data       = context.Request["data"];
            decimal    productFee = 0;    //商品总价格
            OrderModel orderRequestModel; //订单模型

            try
            {
                orderRequestModel = ZentCloud.Common.JSONHelper.JsonToModel <OrderModel>(data);
            }
            catch (Exception ex)
            {
                apiResp.code = 1;
                apiResp.msg  = "JSON格式错误,请检查.错误信息:" + ex.Message;
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
                return;
            }
            #region 检查是否可以下单
            if (string.IsNullOrEmpty(orderRequestModel.select_time_type))
            {
                apiResp.code = 1;
                apiResp.msg  = "请选择一种时间预约方式";
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
                return;
            }
            int totalHours = 0;                            //预约小时数
            if (orderRequestModel.select_time_type == "0") //直接选择开始时间结束时间方式
            {
                if (string.IsNullOrEmpty(orderRequestModel.start_time) || string.IsNullOrEmpty(orderRequestModel.stop_time))
                {
                    apiResp.code = 1;
                    apiResp.msg  = "请选择开始时间与结束时间";
                    context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
                    return;
                }
                if (DateTime.Parse(orderRequestModel.start_time) <= DateTime.Now)
                {
                    apiResp.code = 1;
                    apiResp.msg  = "开始时间需要晚于当前时间";
                    context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
                    return;
                }
                if (DateTime.Parse(orderRequestModel.stop_time) <= DateTime.Parse(orderRequestModel.start_time))
                {
                    apiResp.code = 1;
                    apiResp.msg  = "结束时间需要晚于开始时间";
                    context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
                    return;
                }

                totalHours = (int)(DateTime.Parse(orderRequestModel.stop_time) - DateTime.Parse(orderRequestModel.start_time)).TotalHours;
            }
            else if (orderRequestModel.select_time_type == "1")//选择某一天的多个时间段的方式
            {
                if (string.IsNullOrEmpty(orderRequestModel.date) || string.IsNullOrEmpty(orderRequestModel.date_time_ranges))
                {
                    apiResp.code = 1;
                    apiResp.msg  = "请选择预约时间段";
                    context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
                    return;
                }
                if (DateTime.Parse(orderRequestModel.date) <= DateTime.Now)
                {
                    apiResp.code = 1;
                    apiResp.msg  = "开始时间需要晚于当前时间";
                    context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
                    return;
                }
                totalHours = orderRequestModel.date_time_ranges.Split(';').Count();
            }


            if (!Check(orderRequestModel))
            {
                apiResp.code = 1;
                apiResp.msg  = "您所选的时间段已经被占用,请选择别的时间段";
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
                return;
            }
            #endregion



            WXMallOrderInfo orderInfo = new WXMallOrderInfo();//订单表
            orderInfo.OrderID        = bllMall.GetGUID(BLLJIMP.TransacType.AddMallOrder);
            orderInfo.Consignee      = orderRequestModel.receiver_name;
            orderInfo.InsertDate     = DateTime.Now;
            orderInfo.OrderUserID    = CurrentUserInfo.UserID;
            orderInfo.Phone          = orderRequestModel.receiver_phone;
            orderInfo.WebsiteOwner   = bllMall.WebsiteOwner;
            orderInfo.Transport_Fee  = 0;
            orderInfo.OrderMemo      = orderRequestModel.buyer_memo;
            orderInfo.MyCouponCardId = orderRequestModel.cardcoupon_id.ToString();
            orderInfo.UseScore       = orderRequestModel.use_score;
            orderInfo.Status         = "待付款";
            orderInfo.OrderType      = 3;
            orderInfo.Ex3            = orderRequestModel.select_time_type;
            orderInfo.Ex4            = orderRequestModel.start_time;
            orderInfo.Ex5            = orderRequestModel.stop_time;
            orderInfo.Ex6            = orderRequestModel.date;
            orderInfo.Ex7            = orderRequestModel.date_time_ranges;
            orderInfo.LastUpdateTime = DateTime.Now;
            if (!string.IsNullOrEmpty(orderRequestModel.sale_id))//分销ID
            {
                long saleId = 0;
                if (long.TryParse(orderRequestModel.sale_id, out saleId))
                {
                    orderInfo.SellerId = saleId;
                }
            }
            if (orderRequestModel.pay_type == "WEIXIN")//微信支付
            {
                orderInfo.PaymentType = 2;
            }
            else if (orderRequestModel.pay_type == "ALIPAY")//支付宝支付
            {
                orderInfo.PaymentType = 1;
            }

            #region 格式检查
            if (string.IsNullOrEmpty(orderInfo.Consignee))
            {
                apiResp.code = 1;
                apiResp.msg  = "收货人姓名不能为空";
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
                return;
            }
            if (string.IsNullOrEmpty(orderRequestModel.receiver_phone))
            {
                apiResp.code = 1;
                apiResp.msg  = "联系手机号不能为空";
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
                return;
            }


            if (orderRequestModel.skus == null)
            {
                apiResp.code = 1;
                apiResp.msg  = "skus 参数不能为空";
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
                return;
            }

            //相关检查
            #endregion

            #region 商品检查 订单详情生成
            ///订单详情
            List <WXMallOrderDetailsInfo> detailList = new List <WXMallOrderDetailsInfo>();//订单详情
            #region 购买的商品
            List <WXMallProductInfo> productList = new List <WXMallProductInfo>();
            foreach (var sku in orderRequestModel.skus)
            {
                ProductSku        productSku  = bllMall.GetProductSku(sku.sku_id);
                WXMallProductInfo productInfo = bllMall.GetProduct(productSku.ProductId.ToString());
                productList.Add(productInfo);
            }
            productList = productList.Distinct().ToList();
            #endregion
            #region 检查优惠券是否可用
            if (orderRequestModel.cardcoupon_id > 0)
            {
                var mycardCoupon = bllCardCoupon.GetMyCardCoupon(orderRequestModel.cardcoupon_id, CurrentUserInfo.UserID);
                if (mycardCoupon == null)
                {
                    apiResp.code = 1;
                    apiResp.msg  = "无效的优惠券";
                    context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp)); return;
                }
                var cardCoupon = bllCardCoupon.GetCardCoupon(mycardCoupon.CardId);
                if (cardCoupon == null)
                {
                    apiResp.code = 1;
                    apiResp.msg  = "无效的优惠券";
                    context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp)); return;
                }
                #region 需要购买指定商品
                if ((!string.IsNullOrEmpty(cardCoupon.Ex2)) && (cardCoupon.Ex2 != "0"))
                {
                    if (productList.Count(p => p.PID == cardCoupon.Ex2) == 0)
                    {
                        var productInfo = bllMall.GetProduct(cardCoupon.Ex2);
                        apiResp.code = 1;
                        apiResp.msg  = string.Format("此优惠券需要购买{0}时才可以使用", productInfo.PName);
                        context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp)); return;
                    }
                }


                #endregion

                #region 需要购买指定标签商品
                if (!string.IsNullOrEmpty(cardCoupon.Ex8))
                {
                    if (productList.Where(p => p.Tags == "" || p.Tags == null).Count() == productList.Count)//全部商品都没有标签
                    {
                        apiResp.code = 1;
                        apiResp.msg  = string.Format("使用此优惠券需要购买标签为{0}的商品", cardCoupon.Ex8);
                        context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp)); return;
                    }
                    bool checkResult = false;
                    foreach (var product in productList)
                    {
                        if (!string.IsNullOrEmpty(product.Tags))
                        {
                            foreach (string tag in product.Tags.Split(','))
                            {
                                if (cardCoupon.Ex8.Contains(tag))
                                {
                                    checkResult = true;
                                    break;
                                }
                            }
                        }
                    }
                    if (!checkResult)
                    {
                        apiResp.code = 1;
                        apiResp.msg  = string.Format("使用此优惠券需要购买标签为{0}的商品", cardCoupon.Ex8);
                        context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp)); return;
                    }
                }
                #endregion
            }
            #endregion

            foreach (var sku in orderRequestModel.skus)
            {
                //先检查库存
                ProductSku productSku = bllMall.GetProductSku(sku.sku_id);
                if (productSku == null)
                {
                    apiResp.code = 1;
                    apiResp.msg  = "SKU不存在";
                    context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp)); return;
                }
                WXMallProductInfo productInfo = bllMall.GetProduct(productSku.ProductId.ToString());
                if (productInfo.IsOnSale == "0")
                {
                    apiResp.code = 1;
                    apiResp.msg  = string.Format("{0}已下架", productInfo.PName);
                    context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
                    return;
                }

                WXMallOrderDetailsInfo detailModel = new WXMallOrderDetailsInfo();
                detailModel.OrderID     = orderInfo.OrderID;
                detailModel.PID         = productInfo.PID;
                detailModel.TotalCount  = sku.count;
                detailModel.OrderPrice  = bllMall.GetSkuPrice(productSku) * totalHours;
                detailModel.ProductName = productInfo.PName;
                detailModel.SkuId       = productSku.SkuId;
                detailList.Add(detailModel);
            }
            #endregion
            productFee = detailList.Sum(p => p.OrderPrice * p.TotalCount).Value;   //商品费用
            orderInfo.Transport_Fee = 0;
            orderInfo.Product_Fee   = productFee;
            orderInfo.TotalAmount   = orderInfo.Product_Fee + orderInfo.Transport_Fee;
            #region 优惠券计算
            decimal discountAmount   = 0;//优惠金额
            bool    canUseCardCoupon = false;
            string  msg = "";
            if (orderRequestModel.cardcoupon_id > 0)//有优惠券
            {
                discountAmount = bllMall.CalcDiscountAmount(orderRequestModel.cardcoupon_id.ToString(), data, CurrentUserInfo.UserID, out canUseCardCoupon, out msg);
                if (!canUseCardCoupon)
                {
                    apiResp.code = 1;
                    apiResp.msg  = msg;
                    context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp)); return;
                }
                if (discountAmount > productFee)
                {
                    apiResp.code = 1;
                    apiResp.msg  = "优惠券可优惠金额超过了订单总金额";
                    context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp)); return;
                }
                orderInfo.CardcouponDisAmount = discountAmount;
            }
            #endregion

            #region 积分计算
            decimal scoreExchangeAmount = 0;///积分抵扣的金额
            //积分计算
            if (orderRequestModel.use_score > 0)
            {
                if (CurrentUserInfo.TotalScore < orderRequestModel.use_score)
                {
                    apiResp.code = 1;
                    apiResp.msg  = "积分不足";
                    context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp)); return;
                }
                ScoreConfig scoreConfig = bllScore.GetScoreConfig();
                scoreExchangeAmount = Math.Round(orderRequestModel.use_score / (scoreConfig.ExchangeScore / scoreConfig.ExchangeAmount), 2);
            }



            //积分计算
            #endregion

            #region 合计计算

            orderInfo.TotalAmount  -= discountAmount;        //优惠券优惠金额
            orderInfo.TotalAmount  -= scoreExchangeAmount;   //积分优惠金额
            orderInfo.PayableAmount = orderInfo.TotalAmount; //应付金额
            if ((productFee - discountAmount - scoreExchangeAmount) < orderInfo.TotalAmount)
            {
                apiResp.code = 1;
                apiResp.msg  = "积分兑换金额不能大于订单总金额,请减少积分兑换";
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
                return;
            }
            #endregion
            if (orderInfo.TotalAmount < 0)
            {
                apiResp.code = 1;
                apiResp.msg  = "付款金额不能小于0";
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
                return;
            }
            if (orderInfo.TotalAmount == 0)
            {
                orderInfo.PaymentStatus = 1;
                orderInfo.PayTime       = DateTime.Now;
                orderInfo.Status        = "待发货";
            }
            ZentCloud.ZCBLLEngine.BLLTransaction tran = new ZCBLLEngine.BLLTransaction();
            try
            {
                if (!this.bllMall.Add(orderInfo, tran))
                {
                    tran.Rollback();
                    apiResp.code = 1;
                    apiResp.msg  = "提交失败";
                    context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp)); return;
                }

                #region 更新优惠券使用状态
                //优惠券
                if (orderRequestModel.cardcoupon_id > 0 && (canUseCardCoupon == true))//有优惠券且已经成功使用
                {
                    MyCardCoupons myCardCoupon = bllCardCoupon.GetMyCardCoupon(orderRequestModel.cardcoupon_id, CurrentUserInfo.UserID);
                    myCardCoupon.UseDate = DateTime.Now;
                    myCardCoupon.Status  = 1;
                    if (!bllCardCoupon.Update(myCardCoupon, tran))
                    {
                        tran.Rollback();
                        apiResp.code = 1;
                        apiResp.msg  = "更新优惠券状态失败";
                        context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp)); return;
                    }
                }
                //优惠券
                #endregion

                #region 积分抵扣
                //积分扣除
                if (orderRequestModel.use_score > 0)
                {
                    CurrentUserInfo.TotalScore -= orderRequestModel.use_score;
                    if (bllMall.Update(CurrentUserInfo, string.Format(" TotalScore-={0}", orderRequestModel.use_score), string.Format(" AutoID={0}", CurrentUserInfo.AutoID)) < 0)
                    {
                        tran.Rollback();
                        apiResp.code = 1;
                        apiResp.msg  = "更新用户积分失败";
                        context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp)); return;
                    }
                    //积分记录
                    UserScoreDetailsInfo scoreRecord = new UserScoreDetailsInfo();
                    scoreRecord.AddTime   = DateTime.Now;
                    scoreRecord.Score     = -orderRequestModel.use_score;
                    scoreRecord.ScoreType = "OrderSubmit";
                    scoreRecord.UserID    = CurrentUserInfo.UserID;
                    scoreRecord.AddNote   = "预约使用积分";
                    if (!bllMall.Add(scoreRecord))
                    {
                        tran.Rollback();
                        apiResp.code = 1;
                        apiResp.msg  = "插入积分记录失败";
                        context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
                        return;
                    }
                    //积分记录
                }

                //积分扣除
                #endregion

                #region 插入订单详情页
                foreach (var item in detailList)
                {
                    ProductSku        productSku  = bllMall.GetProductSku((int)(item.SkuId));
                    WXMallProductInfo productInfo = bllMall.GetProduct(productSku.ProductId.ToString());
                    if (!this.bllMall.Add(item, tran))
                    {
                        tran.Rollback();
                        apiResp.code = 1;
                        apiResp.msg  = "提交失败";
                        context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp)); return;
                    }
                }
                #endregion

                tran.Commit();//提交订单事务
            }
            catch (Exception ex)
            {
                //回滚事物
                tran.Rollback();
                apiResp.code = 1;
                apiResp.msg  = "提交订单失败,内部错误";
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
                return;
            }
            apiResp.status = true;
            apiResp.msg    = "ok";
            apiResp.result = new
            {
                order_id = orderInfo.OrderID
            };
            context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(apiResp));
        }
Beispiel #2
0
        /// <summary>
        /// 查询我的卡券
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        private string List(HttpContext context)
        {
            int pageIndex = !string.IsNullOrEmpty(context.Request["pageindex"]) ? int.Parse(context.Request["pageindex"]) : 1;
            int pageSize  = !string.IsNullOrEmpty(context.Request["pagesize"]) ? int.Parse(context.Request["pagesize"]) : 20;

            pageSize = int.MaxValue;
            string cardcouponStatus    = context.Request["cardcoupon_status"];
            string isCanUse            = context.Request["is_can_use"];            //可以正常使用的标识
            string amount              = context.Request["amount"];                //订单金额
            string isNotShowStoreValue = context.Request["is_notshow_storevalue"]; //是否不显示储值卡
            // string skuIds = context.Request["sku_ids"];
            bool               isSuccess  = false;
            string             msg        = "";
            string             couponName = "";
            int                totalCount = 0;
            List <MyCardModel> list       = new List <MyCardModel>();

            #region 优惠券
            var sourceData = bllCardCoupon.GetMyCardCoupons(currentUserInfo.UserID, pageIndex, pageSize, out totalCount, cardcouponStatus);

            foreach (var item in sourceData)
            {
                BLLJIMP.Model.CardCoupons cardCoupon = bllCardCoupon.GetCardCoupon(item.CardId);
                cardCoupon = bllCardCoupon.ConvertExpireTime(cardCoupon, item);
                MyCardModel model = new MyCardModel();
                model.cardcoupon_id      = item.AutoId;
                model.cardcoupon_number  = item.CardCouponNumber;
                model.main_cardcoupon_id = item.CardId;

                model.cardcoupon_name      = cardCoupon.Name;
                model.cardcoupon_type      = ConvertCardCouponType(cardCoupon.CardCouponType);
                model.valid_from           = cardCoupon.ValidFrom.ToString();
                model.valid_to             = cardCoupon.ValidTo.ToString();
                model.img_url              = bllMall.GetImgUrl(cardCoupon.Logo);
                model.cardcoupon_status    = item.Status;
                model.cardcoupon_gettime   = bllCardCoupon.GetTimeStamp(item.InsertDate);
                model.product_id           = cardCoupon.Ex2;
                model.valid_from_timestamp = bllCardCoupon.GetTimeStamp((DateTime)cardCoupon.ValidFrom);
                model.valid_to_timestamp   = bllCardCoupon.GetTimeStamp((DateTime)cardCoupon.ValidTo);
                model.discount             = cardCoupon.Ex1;
                model.deductible_amount    = cardCoupon.Ex3;
                model.freefreight_amount   = cardCoupon.Ex4;
                model.buckle_amount        = cardCoupon.Ex5;
                model.buckle_sub_amount    = cardCoupon.Ex6;
                model.limit_type           = cardCoupon.Ex7;
                model.product_tags         = cardCoupon.Ex8;
                model.hexiao_channel       = item.HexiaoChannel;
                model.is_can_use_shop      = cardCoupon.IsCanUseShop;
                model.is_can_use_groupbuy  = cardCoupon.IsCanUseGroupbuy;

                if (model.cardcoupon_type == 4)//满减券直接转成现金券
                {
                    model.buckle_amount     = "";
                    model.buckle_sub_amount = "";
                    model.cardcoupon_type   = 1;
                    model.deductible_amount = cardCoupon.Ex6;
                }

                #region 转赠信息
                model.is_can_give = bllCardCoupon.IsCanGiveCoupon(item, out msg);
                if (!string.IsNullOrEmpty(item.FromUserId))//赠送人信息
                {
                    model.from_user_info = new UserInfoModel();
                    UserInfo fromUserInfo = bllUser.GetUserInfo(item.FromUserId);
                    if (fromUserInfo != null)
                    {
                        model.from_user_info.head_img_url = bllUser.GetUserDispalyAvatar(fromUserInfo);
                        model.from_user_info.nick_name    = bllUser.GetUserDispalyName(fromUserInfo);
                    }
                }
                if (!string.IsNullOrEmpty(item.ToUserId))//被赠送人信息
                {
                    model.to_user_info = new UserInfoModel();
                    UserInfo toUserInfo = bllUser.GetUserInfo(item.ToUserId);
                    if (toUserInfo != null)
                    {
                        model.to_user_info.head_img_url = bllUser.GetUserDispalyAvatar(toUserInfo);
                        model.to_user_info.nick_name    = bllUser.GetUserDispalyName(toUserInfo);
                    }
                }
                #endregion

                if (isCanUse == "1")//可以使用
                {
                    if (model.cardcoupon_status == 0)
                    {
                        if (cardCoupon.ValidFrom != null && cardCoupon.ValidTo != null)
                        {
                            DateTime dtNow = DateTime.Now;
                            if (dtNow >= (DateTime)(cardCoupon.ValidFrom) && (dtNow <= (DateTime)(cardCoupon.ValidTo)))
                            {
                                list.Add(model);
                                //if (!string.IsNullOrEmpty(amount))
                                //{
                                //    if (bllMall.CalcDiscountAmount(item.AutoId.ToString(), decimal.Parse(amount), CurrentUserInfo.UserID, out isSuccess, out msg, out couponName) > 0)
                                //    {
                                //        list.Add(model);
                                //    }
                                //}
                                //else
                                //{
                                //    list.Add(model);
                                //}
                            }
                        }
                    }
                }
                else
                {
                    if (!string.IsNullOrEmpty(amount))
                    {
                        if (bllMall.CalcDiscountAmount(item.AutoId.ToString(), decimal.Parse(amount), currentUserInfo.UserID, out isSuccess, out msg, out couponName) > 0)
                        {
                            list.Add(model);
                        }
                    }
                    else
                    {
                        list.Add(model);
                    }
                }
            }
            #endregion



            #region 储值卡转换成现金券
            if (string.IsNullOrEmpty(isNotShowStoreValue))
            {
                var storeValueCardList = bllStoredValue.GetCanUseStoredValueCardList(currentUserInfo.UserID);
                foreach (var item in storeValueCardList)
                {
                    try
                    {
                        BLLJIMP.Model.StoredValueCard cardCoupon = bllStoredValue.Get <StoredValueCard>(string.Format(" AutoId={0}", item.CardId));
                        MyCardModel model = new MyCardModel();
                        model.cardcoupon_id      = item.AutoId;
                        model.main_cardcoupon_id = item.CardId;
                        model.cardcoupon_name    = string.Format("{0}(储值卡余额{1}元)", cardCoupon.Name, bllMall.GetStoreValueCardCanUseAmount(item.AutoId.ToString(), item.UserId));
                        model.valid_from         = DateTime.Now.ToString();
                        model.valid_to           = cardCoupon.ValidTo.ToString();
                        // model.img_url = bllMall.GetImgUrl(cardCoupon.Logo);
                        model.cardcoupon_status = 0;
                        //model.cardcoupon_gettime = bllCardCoupon.GetTimeStamp(item.InsertDate);
                        //model.product_id = cardCoupon.Ex2;
                        model.valid_from_timestamp = bllCardCoupon.GetTimeStamp(DateTime.Now);
                        model.valid_to_timestamp   = bllCardCoupon.GetTimeStamp((DateTime)cardCoupon.ValidTo);
                        model.discount             = "";
                        //model.deductible_amount = cardCoupon.Ex3;
                        model.freefreight_amount = "";
                        model.buckle_amount      = "";
                        model.buckle_sub_amount  = "";
                        model.limit_type         = "";
                        model.product_tags       = "";
                        //model.hexiao_channel = item.HexiaoChannel;
                        model.is_can_use_shop     = 1;
                        model.is_can_use_groupbuy = 1;
                        model.product_id          = "";
                        model.buckle_amount       = "";
                        model.buckle_sub_amount   = "";
                        model.cardcoupon_type     = 1;
                        model.deductible_amount   = (item.Amount - bllStoredValue.GetUseRecordList(item.AutoId, item.UserId).Sum(p => p.UseAmount)).ToString();
                        model.is_store_card       = 1;
                        list.Add(model);
                        totalCount++;
                    }
                    catch (Exception ex)
                    {
                        continue;
                    }
                }
                #endregion

                #region 海澜处理

                if (bllCardCoupon.WebsiteOwner.Contains("hailan"))
                {
                    Open.HongWareSDK.Client client = new Open.HongWareSDK.Client(bllCardCoupon.WebsiteOwner);
                    Open.HongWareSDK.Entity.YimaVerifyCard yimaCard = new Open.HongWareSDK.Entity.YimaVerifyCard();
                    yimaCard.pos_seq = DateTime.Now.ToString("yyyyMMddHHmmss");

                    List <string> cardCodes = new List <string>();
                    client.YimaCardVerify(yimaCard, out cardCodes, out msg);
                    if (cardCodes.Count > 0)
                    {
                        foreach (var item in list)
                        {
                            if (cardCodes.Contains(item.yima_cardcode))
                            {
                                list.Remove(item);
                            }
                        }
                    }
                    else
                    {
                        list = new List <MyCardModel>();//无卡券可用
                    }
                }
                #endregion
            }
            return(ZentCloud.Common.JSONHelper.ObjectToJson(new
            {
                totalcount = list.Count,
                list = list
            }));
        }
Beispiel #3
0
        /// <summary>
        /// 获取订单金额可以获得的积分V2
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        private string ScoreGetRateV2(HttpContext context)
        {
            ScoreConfig scoreConfig = bllScore.GetScoreConfig();

            if (scoreConfig != null)
            {
                string            data       = context.Request["data"];
                decimal           productFee = 0;    //商品总价格 不包含邮费
                OrderRequestModel orderRequestModel; //订单模型
                try
                {
                    orderRequestModel = ZentCloud.Common.JSONHelper.JsonToModel <OrderRequestModel>(data);
                }
                catch (Exception ex)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "JSON格式错误,请检查。错误信息:" + ex.Message;
                    return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                }

                #region 格式检查

                if (orderRequestModel.skus == null)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "参数skus 不能为空";
                    return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                }
                //相关检查
                #endregion


                #region 商品检查 订单详情生成
                ///订单详情
                List <WXMallOrderDetailsInfo> detailList = new List <WXMallOrderDetailsInfo>();//订单详情
                orderRequestModel.skus = orderRequestModel.skus.Distinct().ToList();
                foreach (var sku in orderRequestModel.skus)
                {
                    //先检查库存
                    ProductSku productSku = bllMall.GetProductSku(sku.sku_id);
                    if (productSku == null)
                    {
                        resp.errcode = 1;
                        resp.errmsg  = "SKU不存在,请检查";
                        return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                    }

                    WXMallProductInfo productInfo = bllMall.GetProduct(productSku.ProductId.ToString());
                    if (productInfo.IsOnSale == "0")
                    {
                        resp.errcode = 1;
                        resp.errmsg  = string.Format("{0}已下架", productInfo.PName);
                        return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                    }


                    WXMallOrderDetailsInfo detailModel = new WXMallOrderDetailsInfo();
                    detailModel.PID         = productInfo.PID;
                    detailModel.TotalCount  = sku.count;
                    detailModel.OrderPrice  = bllMall.GetSkuPrice(productSku);
                    detailModel.ProductName = productInfo.PName;
                    detailModel.SkuId       = productSku.SkuId;
                    detailModel.SkuShowProp = bllMall.GetProductShowProperties(productSku.SkuId);
                    detailList.Add(detailModel);
                }
                #endregion

                productFee = detailList.Sum(p => p.OrderPrice * p.TotalCount).Value;//商品费用


                //物流费用旧的
                // orderInfo.Transport_Fee = bllMall.CalcFreight(orderRequestModel.skus.Sum(p => p.count));
                #region 运费计算
                FreightModel freightModel = new FreightModel();
                freightModel.receiver_province_code = orderRequestModel.receiver_province_code;
                freightModel.receiver_city_code     = orderRequestModel.receiver_city_code;
                freightModel.receiver_dist_code     = orderRequestModel.receiver_dist_code;
                freightModel.skus = orderRequestModel.skus;
                decimal freight    = 0;
                string  freightMsg = "";
                if (!bllMall.CalcFreight(freightModel, out freight, out freightMsg))
                {
                    resp.errcode = 1;
                    resp.errmsg  = freightMsg;
                    return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                }
                WXMallOrderInfo orderInfo = new WXMallOrderInfo();//订单信息
                orderInfo.Transport_Fee = freight;
                #endregion

                #region 优惠券计算
                decimal discountAmount   = 0;//优惠金额
                bool    canUseCardCoupon = false;
                string  msg = "";
                if (orderRequestModel.cardcoupon_id > 0)//有优惠券
                {
                    discountAmount = bllMall.CalcDiscountAmount(orderRequestModel.cardcoupon_id.ToString(), data, bllMall.GetCurrUserID(), out canUseCardCoupon, out msg);
                    if (!canUseCardCoupon)
                    {
                        resp.errcode = 1;
                        resp.errmsg  = msg;
                        return(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                    }
                }
                //优惠券计算
                #endregion

                //积分计算
                decimal scoreExchangeAmount = 0;///积分抵扣的金额
                if (orderRequestModel.use_score > 0)
                {
                    scoreExchangeAmount = Math.Round(orderRequestModel.use_score / (scoreConfig.ExchangeScore / scoreConfig.ExchangeAmount), 2);
                }

                //计算
                orderInfo.Product_Fee   = productFee;
                orderInfo.TotalAmount   = orderInfo.Product_Fee + orderInfo.Transport_Fee;
                orderInfo.TotalAmount  -= discountAmount;      //折扣金额
                orderInfo.PayableAmount = orderInfo.TotalAmount - freight;
                orderInfo.TotalAmount  -= scoreExchangeAmount; //积分抵现金
                return(ZentCloud.Common.JSONHelper.ObjectToJson(new
                {
                    errcode = 0,
                    errmsg = orderInfo.PayableAmount
                }));
            }
            else
            {
                return(ZentCloud.Common.JSONHelper.ObjectToJson(new
                {
                    errcode = 1,
                    errmsg = "尚未配置订单获取积分比例"
                }));
            }
        }
Beispiel #4
0
        public void ProcessRequest(HttpContext context)
        {
            /// <summary>
            /// 卡券BLL
            /// </summary>
            BLLJIMP.BLLCardCoupon bllCardCoupon = new BLLJIMP.BLLCardCoupon();
            /// <summary>
            /// 商城BLL
            /// </summary>
            BLLJIMP.BLLMall bllMall = new BLLJIMP.BLLMall();
            /// <summary>
            /// 用户BLL
            /// </summary>
            BLLJIMP.BLLUser bllUser = new BLLJIMP.BLLUser();
            /// <summary>
            /// 微信BLL
            /// </summary>
            BLLJIMP.BLLWeixin bllWeixin = new BLLJIMP.BLLWeixin();
            /// <summary>
            ///
            /// </summary>
            BLLJIMP.BLLStoredValueCard bllStoredValue = new BLLJIMP.BLLStoredValueCard();
            /// <summary>
            ///
            /// </summary>
            BLLJIMP.BLLWeixinCard bllWeixinCard = new BLLJIMP.BLLWeixinCard();


            int pageIndex = !string.IsNullOrEmpty(context.Request["pageindex"]) ? int.Parse(context.Request["pageindex"]) : 1;
            int pageSize  = !string.IsNullOrEmpty(context.Request["pagesize"]) ? int.Parse(context.Request["pagesize"]) : 20;

            pageSize = int.MaxValue;
            string cardcouponStatus    = context.Request["cardcoupon_status"];
            string isCanUse            = "0";                                      // context.Request["is_can_use"];//可以正常使用的标识
            string amount              = context.Request["amount"];                //订单金额
            string isNotShowStoreValue = context.Request["is_notshow_storevalue"]; //是否不显示储值卡

            string openId = context.Request["open_id"];

            bool   isSuccess  = false;
            string msg        = "";
            string couponName = "";
            int    totalCount = 0;

            var currUser = bllUser.GetUserInfoByOpenId(openId);

            if (currUser == null)
            {
                resp.status = false;
                resp.msg    = "openid找不到用户";
                context.Response.Write(JsonConvert.SerializeObject(resp));
                return;
            }

            List <MyCardModel> list = new List <MyCardModel>();

            #region 优惠券
            var sourceData = bllCardCoupon.GetMyCardCoupons(currUser.UserID, pageIndex, pageSize, out totalCount, cardcouponStatus);
            foreach (var item in sourceData)
            {
                BLLJIMP.Model.CardCoupons cardCoupon = bllCardCoupon.GetCardCoupon(item.CardId);
                cardCoupon = bllCardCoupon.ConvertExpireTime(cardCoupon, item);
                MyCardModel model = new MyCardModel();
                model.cardcoupon_id        = item.AutoId;
                model.main_cardcoupon_id   = item.CardId;
                model.cardcoupon_name      = cardCoupon.Name;
                model.cardcoupon_type      = ConvertCardCouponType(cardCoupon.CardCouponType);
                model.valid_from           = cardCoupon.ValidFrom.ToString();
                model.valid_to             = cardCoupon.ValidTo.ToString();
                model.img_url              = bllMall.GetImgUrl(cardCoupon.Logo);
                model.cardcoupon_status    = item.Status;
                model.cardcoupon_gettime   = bllCardCoupon.GetTimeStamp(item.InsertDate);
                model.product_id           = cardCoupon.Ex2;
                model.valid_from_timestamp = bllCardCoupon.GetTimeStamp((DateTime)cardCoupon.ValidFrom);
                model.valid_to_timestamp   = bllCardCoupon.GetTimeStamp((DateTime)cardCoupon.ValidTo);
                model.discount             = cardCoupon.Ex1;
                model.deductible_amount    = cardCoupon.Ex3;
                model.freefreight_amount   = cardCoupon.Ex4;
                model.buckle_amount        = cardCoupon.Ex5;
                model.buckle_sub_amount    = cardCoupon.Ex6;
                model.limit_type           = cardCoupon.Ex7;
                model.product_tags         = cardCoupon.Ex8;
                model.hexiao_channel       = item.HexiaoChannel;
                model.is_can_use_shop      = cardCoupon.IsCanUseShop;
                model.is_can_use_groupbuy  = cardCoupon.IsCanUseGroupbuy;
                model.weixin_card_id       = cardCoupon.WeixinCardId;

                if (model.cardcoupon_type == 4)//满减券直接转成现金券
                {
                    model.buckle_amount     = "";
                    model.buckle_sub_amount = "";
                    model.cardcoupon_type   = 1;
                    model.deductible_amount = cardCoupon.Ex6;
                }

                #region 转赠信息
                model.is_can_give = bllCardCoupon.IsCanGiveCoupon(item, out msg);
                if (!string.IsNullOrEmpty(item.FromUserId))//赠送人信息
                {
                    model.from_user_info = new UserInfoModel();
                    UserInfo fromUserInfo = bllUser.GetUserInfo(item.FromUserId);
                    if (fromUserInfo != null)
                    {
                        model.from_user_info.head_img_url = bllUser.GetUserDispalyAvatar(fromUserInfo);
                        model.from_user_info.nick_name    = bllUser.GetUserDispalyName(fromUserInfo);
                    }
                }
                if (!string.IsNullOrEmpty(item.ToUserId))//被赠送人信息
                {
                    model.to_user_info = new UserInfoModel();
                    UserInfo toUserInfo = bllUser.GetUserInfo(item.ToUserId);
                    if (toUserInfo != null)
                    {
                        model.to_user_info.head_img_url = bllUser.GetUserDispalyAvatar(toUserInfo);
                        model.to_user_info.nick_name    = bllUser.GetUserDispalyName(toUserInfo);
                    }
                }
                #endregion

                if (isCanUse == "1")//可以使用
                {
                    if (model.cardcoupon_status == 0)
                    {
                        if (cardCoupon.ValidFrom != null && cardCoupon.ValidTo != null)
                        {
                            DateTime dtNow = DateTime.Now;
                            if (dtNow >= (DateTime)(cardCoupon.ValidFrom) && (dtNow <= (DateTime)(cardCoupon.ValidTo)))
                            {
                                list.Add(model);
                                //if (!string.IsNullOrEmpty(amount))
                                //{
                                //    if (bllMall.CalcDiscountAmount(item.AutoId.ToString(), decimal.Parse(amount), currUser.UserID, out isSuccess, out msg, out couponName) > 0)
                                //    {
                                //        list.Add(model);
                                //    }
                                //}
                                //else
                                //{
                                //    list.Add(model);
                                //}
                            }
                        }
                    }
                }
                else
                {
                    if (!string.IsNullOrEmpty(amount))
                    {
                        if (bllMall.CalcDiscountAmount(item.AutoId.ToString(), decimal.Parse(amount), currUser.UserID, out isSuccess, out msg, out couponName) > 0)
                        {
                            list.Add(model);
                        }
                    }
                    else
                    {
                        list.Add(model);
                    }
                }
            }
            #endregion

            #region 储值卡转换成现金券
            if (string.IsNullOrEmpty(isNotShowStoreValue))
            {
                var storeValueCardList = bllStoredValue.GetCanUseStoredValueCardList(currUser.UserID);
                foreach (var item in storeValueCardList)
                {
                    try
                    {
                        BLLJIMP.Model.StoredValueCard cardCoupon = bllStoredValue.Get <StoredValueCard>(string.Format(" AutoId={0}", item.CardId));
                        MyCardModel model = new MyCardModel();
                        model.cardcoupon_id      = item.AutoId;
                        model.main_cardcoupon_id = item.CardId;
                        model.cardcoupon_name    = string.Format("{0}(储值卡余额{1}元)", cardCoupon.Name, bllMall.GetStoreValueCardCanUseAmount(item.AutoId.ToString(), item.UserId));
                        model.valid_from         = DateTime.Now.ToString();
                        model.valid_to           = cardCoupon.ValidTo.ToString();
                        // model.img_url = bllMall.GetImgUrl(cardCoupon.Logo);
                        model.cardcoupon_status = 0;
                        //model.cardcoupon_gettime = bllCardCoupon.GetTimeStamp(item.InsertDate);
                        //model.product_id = cardCoupon.Ex2;
                        model.valid_from_timestamp = bllCardCoupon.GetTimeStamp(DateTime.Now);
                        model.valid_to_timestamp   = bllCardCoupon.GetTimeStamp((DateTime)cardCoupon.ValidTo);
                        model.discount             = "";
                        //model.deductible_amount = cardCoupon.Ex3;
                        model.freefreight_amount = "";
                        model.buckle_amount      = "";
                        model.buckle_sub_amount  = "";
                        model.limit_type         = "";
                        model.product_tags       = "";
                        //model.hexiao_channel = item.HexiaoChannel;
                        model.is_can_use_shop     = 1;
                        model.is_can_use_groupbuy = 1;
                        model.product_id          = "";
                        model.buckle_amount       = "";
                        model.buckle_sub_amount   = "";
                        model.cardcoupon_type     = 1;
                        model.deductible_amount   = (item.Amount - bllStoredValue.GetUseRecordList(item.AutoId, item.UserId).Sum(p => p.UseAmount)).ToString();
                        model.is_store_card       = 1;
                        list.Add(model);
                        totalCount++;
                    }
                    catch (Exception ex)
                    {
                        continue;
                    }
                }
                #endregion
            }

            resp.status = true;

            resp.result = new
            {
                totalcount = list.Count,
                list       = list
            };

            context.Response.Write(JsonConvert.SerializeObject(resp));
        }
Beispiel #5
0
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            currentUserInfo = bllUser.GetCurrentUserInfo();
            string            data              = context.Request["data"];
            decimal           productFee        = 0;                       //商品总价格 不包含邮费
            OrderRequestModel orderRequestModel = new OrderRequestModel(); //订单模型

            try
            {
                orderRequestModel = ZentCloud.Common.JSONHelper.JsonToModel <OrderRequestModel>(data);
            }
            catch (Exception ex)
            {
                resp.errcode = 1;
                resp.errmsg  = "JSON格式错误,请检查。错误信息:" + ex.Message;
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
            }
            WXMallOrderInfo orderInfo = new WXMallOrderInfo();//订单表

            orderInfo.InsertDate     = DateTime.Now;
            orderInfo.OrderUserID    = currentUserInfo.UserID;
            orderInfo.WebsiteOwner   = bllMall.WebsiteOwner;
            orderInfo.Transport_Fee  = 0;
            orderInfo.OrderID        = bllMall.GetGUID(BLLJIMP.TransacType.AddMallOrder);
            orderInfo.OrderMemo      = orderRequestModel.buyer_memo;
            orderInfo.MyCouponCardId = orderRequestModel.cardcoupon_id.ToString();
            orderInfo.UseScore       = orderRequestModel.use_score;
            orderInfo.Status         = "待付款";
            orderInfo.OrderType      = 1;
            if (orderRequestModel.pay_type == "WEIXIN")//微信支付
            {
                orderInfo.PaymentType = 2;
            }
            else if (orderRequestModel.pay_type == "ALIPAY")//支付宝支付
            {
                orderInfo.PaymentType = 1;
            }

            #region 格式检查
            //相关检查
            if (orderRequestModel.skus == null)
            {
                resp.errcode = 1;
                resp.errmsg  = "参数skus 不能为空";
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                return;
            }
            //相关检查
            #endregion


            #region 商品检查 订单详情生成
            ///订单详情
            List <WXMallOrderDetailsInfo> detailList = new List <WXMallOrderDetailsInfo>();//订单详情
            orderRequestModel.skus = orderRequestModel.skus.Distinct().ToList();
            foreach (var sku in orderRequestModel.skus)
            {
                //先检查库存
                ProductSku productSku = bllMall.GetProductSku(sku.sku_id);
                if (productSku == null)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "SKU不存在";
                    context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                    return;
                }

                WXMallProductInfo productInfo = bllMall.GetProduct(productSku.ProductId.ToString());
                if (productInfo.IsOnSale == "0")
                {
                    resp.errcode = 1;
                    resp.errmsg  = string.Format("{0}已下架", productInfo.PName);
                    context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                    return;
                }
                if (bllMall.GetSkuCount(productSku) < sku.count)
                {
                    resp.errcode = 1;
                    resp.errmsg  = string.Format("{0}{1}库存余量为{2},库存不足,请减少购买数量", productInfo.PName, bllMall.GetProductShowProperties(productSku.SkuId), productSku.Stock);
                    context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                    return;
                }
                if (bllMall.IsPromotionTime(productSku))
                {
                    if (sku.count > productSku.PromotionStock)
                    {
                        resp.errcode = 1;
                        resp.errmsg  = string.Format("{0}{1}特卖库存余量为{2},库存不足,请减少购买数量", productInfo.PName, bllMall.GetProductShowProperties(productSku.SkuId), productSku.PromotionStock);
                        context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                        return;
                    }
                }
                WXMallOrderDetailsInfo detailModel = new WXMallOrderDetailsInfo();
                detailModel.OrderID     = orderInfo.OrderID;
                detailModel.PID         = productInfo.PID;
                detailModel.TotalCount  = sku.count;
                detailModel.OrderPrice  = bllMall.GetSkuPrice(productSku);
                detailModel.ProductName = productInfo.PName;
                detailModel.SkuId       = productSku.SkuId;
                detailModel.SkuShowProp = bllMall.GetProductShowProperties(productSku.SkuId);
                detailList.Add(detailModel);
            }
            #endregion

            productFee = detailList.Sum(p => p.OrderPrice * p.TotalCount).Value;//商品费用

            //物流费用
            #region 运费计算
            FreightModel freightModel = new FreightModel();
            freightModel.skus = orderRequestModel.skus;
            decimal freight    = 0;//运费
            string  freightMsg = "";
            if (!bllMall.CalcFreight(freightModel, out freight, out freightMsg))
            {
                resp.errcode = 1;
                resp.errmsg  = freightMsg;
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                return;
            }
            orderInfo.Transport_Fee = freight;
            #endregion
            #region 优惠券计算
            decimal discountAmount   = 0;//优惠金额
            bool    canUseCardCoupon = false;
            string  msg = "";
            if (orderRequestModel.cardcoupon_id > 0)//有优惠券
            {
                discountAmount = bllMall.CalcDiscountAmount(orderRequestModel.cardcoupon_id.ToString(), data, currentUserInfo.UserID, out canUseCardCoupon, out msg);
                if (!canUseCardCoupon)
                {
                    resp.errcode = 1;
                    resp.errmsg  = msg;
                    context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                    return;
                }
                if (discountAmount > productFee + orderInfo.Transport_Fee)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "优惠券可优惠金额超过了订单总金额";
                    context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                    return;
                }
            }
            //优惠券计算
            #endregion


            #region 积分计算
            decimal scoreExchangeAmount = 0;///积分抵扣的金额
            //积分计算
            if (orderRequestModel.use_score > 0)
            {
                if (currentUserInfo.TotalScore < orderRequestModel.use_score)
                {
                    resp.errcode = 1;
                    resp.errmsg  = "积分不足";
                    context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                    return;
                }
                ScoreConfig scoreConfig = bllScore.GetScoreConfig();
                scoreExchangeAmount = Math.Round(orderRequestModel.use_score / (scoreConfig.ExchangeScore / scoreConfig.ExchangeAmount), 2);
            }
            #region 驿氪积分同步



            #endregion


            //积分计算
            #endregion


            //合计计算
            orderInfo.Product_Fee   = productFee;
            orderInfo.TotalAmount   = orderInfo.Product_Fee + orderInfo.Transport_Fee;
            orderInfo.TotalAmount  -= discountAmount;                  //优惠券优惠金额
            orderInfo.TotalAmount  -= scoreExchangeAmount;             //积分优惠金额
            orderInfo.PayableAmount = orderInfo.TotalAmount - freight; //应付金额
            if ((productFee + orderInfo.Transport_Fee - discountAmount - scoreExchangeAmount) < orderInfo.TotalAmount)
            {
                resp.errcode = 1;
                resp.errmsg  = "积分兑换金额不能大于订单总金额,请减少积分兑换";
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                return;
            }



            ZentCloud.ZCBLLEngine.BLLTransaction tran = new ZCBLLEngine.BLLTransaction();
            try
            {
                if (!this.bllMall.Add(orderInfo, tran))
                {
                    tran.Rollback();
                    resp.errcode = 1;
                    resp.errmsg  = "提交失败";
                    context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                    return;
                }

                #region 更新优惠券使用状态
                //优惠券
                if (orderRequestModel.cardcoupon_id > 0 && (canUseCardCoupon == true))//有优惠券且已经成功使用
                {
                    MyCardCoupons myCardCoupon = bllCardCoupon.GetMyCardCoupon(orderRequestModel.cardcoupon_id, currentUserInfo.UserID);
                    myCardCoupon.UseDate = DateTime.Now;
                    myCardCoupon.Status  = 1;
                    if (!bllCardCoupon.Update(myCardCoupon, tran))
                    {
                        tran.Rollback();
                        resp.errcode = 1;
                        resp.errmsg  = "更新优惠券状态失败";
                        context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                        return;
                    }
                }
                //优惠券
                #endregion

                #region 积分抵扣
                //积分扣除
                if (orderRequestModel.use_score > 0)
                {
                    currentUserInfo.TotalScore -= orderRequestModel.use_score;
                    if (

                        bllMall.Update(currentUserInfo, string.Format(" TotalScore-={0}", orderRequestModel.use_score), string.Format(" AutoID={0}", currentUserInfo.AutoID)) < 0)
                    {
                        tran.Rollback();
                        resp.errcode = 1;
                        resp.errmsg  = "更新用户积分失败";
                        context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                        return;
                    }

                    //积分记录
                    WXMallScoreRecord scoreRecord = new WXMallScoreRecord();
                    scoreRecord.InsertDate   = DateTime.Now;
                    scoreRecord.OrderID      = orderInfo.OrderID;
                    scoreRecord.Score        = orderRequestModel.use_score;
                    scoreRecord.Type         = 1;
                    scoreRecord.UserId       = currentUserInfo.UserID;
                    scoreRecord.WebsiteOwner = bllMall.WebsiteOwner;
                    scoreRecord.Remark       = "积分抵扣";
                    if (!bllMall.Add(scoreRecord))
                    {
                        tran.Rollback();
                        resp.errcode = 1;
                        resp.errmsg  = "插入积分记录失败";
                        context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                        return;
                    }

                    //积分记录
                }

                //积分扣除
                #endregion

                #region 插入订单详情页及更新库存
                foreach (var item in detailList)
                {
                    ProductSku        productSku  = bllMall.GetProductSku((int)(item.SkuId));
                    WXMallProductInfo productInfo = bllMall.GetProduct(productSku.ProductId.ToString());
                    if (!this.bllMall.Add(item, tran))
                    {
                        tran.Rollback();
                        resp.errcode = 1;
                        resp.errmsg  = "提交失败";
                        context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                        return;
                    }
                    //更新 SKU库存
                    productSku.Stock -= item.TotalCount;
                    if (bllMall.IsPromotionTime(productSku))
                    {
                        productSku.PromotionStock -= item.TotalCount;
                    }
                    if (!bllMall.Update(productSku, tran))
                    {
                        tran.Rollback();
                        resp.errcode = 1;
                        resp.errmsg  = "更新SKU失败";
                        context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                        return;
                    }
                }
                #endregion
                tran.Commit();//提交订单事务
            }
            catch (Exception ex)
            {
                //回滚事物
                tran.Rollback();
                resp.errcode = 1;
                resp.errmsg  = ex.Message;
                context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(resp));
                return;
            }
            context.Response.Write(ZentCloud.Common.JSONHelper.ObjectToJson(new
            {
                errcode  = 0,
                errmsg   = "ok",
                order_id = orderInfo.OrderID
            }));
        }