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)); }
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(); string cardCouponId = context.Request["cardcoupon_id"]; //主卡券ID string myCardCouponId = context.Request["my_cardcoupon_id"]; //我的卡券ID if (string.IsNullOrEmpty(cardCouponId)) { resp.status = false; resp.msg = "cardcoupon_id 参数必传"; context.Response.Write(JsonConvert.SerializeObject(resp)); return; } CardCoupons cardCoupon = bllCardCoupon.GetCardCouponByWXCardId(cardCouponId); if (cardCoupon == null) { cardCoupon = bllCardCoupon.GetCardCoupon(int.Parse(cardCouponId)); if (cardCoupon == null) { resp.status = false; resp.msg = "cardcoupon_id 不存在"; context.Response.Write(JsonConvert.SerializeObject(resp)); return; } } cardCoupon = bllCardCoupon.ConvertExpireTime(cardCoupon); MainCardModel model = new MainCardModel(); model.cardcoupon_id = cardCoupon.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.discount = string.IsNullOrEmpty(cardCoupon.Ex1) ? 0 : double.Parse(cardCoupon.Ex1); model.product_id = string.IsNullOrEmpty(cardCoupon.Ex2) ? 0 : double.Parse(cardCoupon.Ex2); model.deductible_amount = string.IsNullOrEmpty(cardCoupon.Ex3) ? 0 : double.Parse(cardCoupon.Ex3); model.freefreight_amount = string.IsNullOrEmpty(cardCoupon.Ex4) ? 0 : double.Parse(cardCoupon.Ex4); model.buckle_amount = string.IsNullOrEmpty(cardCoupon.Ex5) ? 0 : double.Parse(cardCoupon.Ex5); model.buckle_sub_amount = string.IsNullOrEmpty(cardCoupon.Ex6) ? 0 : double.Parse(cardCoupon.Ex6); model.max_count = cardCoupon.MaxCount; model.send_count = cardCoupon.SendCount; model.un_send_count = cardCoupon.UnSendCount; //model.is_recivece = bllCardCoupon.IsReciveCoupon(cardCoupon.CardId, CurrentUserInfo.UserID); model.valid_to_timestamp = bllCardCoupon.GetTimeStamp((DateTime)cardCoupon.ValidTo); model.limit_type = cardCoupon.Ex7; model.product_tags = cardCoupon.Ex8; model.user_get_limit_type = cardCoupon.GetLimitType; model.is_can_use_shop = cardCoupon.IsCanUseShop; model.is_can_use_groupbuy = cardCoupon.IsCanUseGroupbuy; model.expire_time_type = cardCoupon.ExpireTimeType; model.expire_day = cardCoupon.ExpireDay; model.weixin_card_id = cardCoupon.WeixinCardId == null ? "" : cardCoupon.WeixinCardId; if (!string.IsNullOrEmpty(myCardCouponId)) { MyCardCoupons myCardCoupon = bllCardCoupon.GetMyCardCoupon(int.Parse(myCardCouponId)); if (myCardCoupon != null) { UserInfo fromUserInfo = bllUser.GetUserInfo(myCardCoupon.UserId); if (fromUserInfo != null) { model.from_user_info = new UserInfoModel(); model.from_user_info.head_img_url = bllUser.GetUserDispalyAvatar(fromUserInfo); model.from_user_info.nick_name = bllUser.GetUserDispalyName(fromUserInfo); } if (!string.IsNullOrEmpty(myCardCoupon.ToUserId)) { model.is_donation = true; } } } resp.status = true; resp.result = model; context.Response.Write(JsonConvert.SerializeObject(resp)); }
/// <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 })); }
/// <summary> /// 抽奖 /// </summary> /// <param name="context"></param> /// <returns></returns> private string Scratch(HttpContext context) { try { if (!bll.IsLogin) { return("请先登录"); } string id = context.Request["id"]; if (string.IsNullOrEmpty(id)) { return("id必传"); } /* * 检查是否是签到抽奖,是则: * 1.当前是否是在周日,不在周日则不能抽奖 * 2.如果在周日,检查是否一周内有签到记录,否则不能抽奖 * */ var signInModel = new BLLJIMP.BLLSignIn().Get <SignInAddress>(string.Format(" WebsiteOwner='{0}' AND Type='Sign' ", currentUserInfo.WebsiteOwner)); if (signInModel != null && signInModel.LotteryId == id) { var dt = DateTime.Now; if (dt.DayOfWeek != DayOfWeek.Sunday) { return("周日才可以抽奖"); } //获取本周签到记录,倒退七天是否有七条 var signInCount = bll.GetCount <SignInLog>(string.Format(" cast(SignInDate as date) between '{0}' and '{1}' and WebsiteOwner = '{2}' and UserID = '{3}' ", dt.AddDays(-6).ToString("yyyy-MM-dd"), dt.ToString("yyyy-MM-dd"), currentUserInfo.WebsiteOwner, currentUserInfo.UserID )); if (signInCount < 7) { return("一周连续签到才可以抽奖"); } } #region 检查是否可以继续 ScratchJsonModel apiResult = new ScratchJsonModel(); apiResult.awardName = "谢谢参与"; WXLotteryV1 model = bll.Get <WXLotteryV1>(string.Format("LotteryID={0}", id)); if (model == null) { goto outoff; } apiResult.awardId = model.LotteryID; apiResult.isStart = model.Status == 1 ? true : false; if (model.StartTime != null) { apiResult.startTime = model.StartTime.Value.ToString("yyyy/MM/dd HH:mm:ss"); if (model.StartTime <= DateTime.Now)//已经到了开奖时间了 { if (model.Status == 1) { apiResult.isStart = true; } else { apiResult.errorCode = (int)BLLJIMP.Enums.APIErrCode.NotStart; apiResult.awardName = "刮奖未开启"; apiResult.isStart = false; } } else//开奖时间还没到 { apiResult.errorCode = (int)BLLJIMP.Enums.APIErrCode.NotStart; apiResult.awardName = "未到刮奖时间"; apiResult.isStart = false; goto outoff; } } //检查结束时间 if (model.EndTime != null) { apiResult.startTime = model.EndTime.Value.ToString("yyyy/MM/dd HH:mm:ss"); if (model.EndTime.Value <= DateTime.Now) { apiResult.errorCode = (int)BLLJIMP.Enums.APIErrCode.IsEnd; apiResult.awardName = "已结束"; apiResult.isStart = false; goto outoff; } } if (context.Request["hideAward"] != "1") { apiResult.winRecord = bll.GetWXLotteryRecordList(model.LotteryID, currentUserInfo.UserID); } if (model.WinLimitType.Equals(0)) { var lotteryRecord = bll.GetWXLotteryRecordV1(currentUserInfo.UserID, model.LotteryID); if (lotteryRecord != null) { if (context.Request["hideAward"] != "1") { WXLotteryLogV1 logWinLimit = new WXLotteryLogV1(); logWinLimit.LotteryId = model.LotteryID; logWinLimit.UserId = currentUserInfo.UserID; logWinLimit.InsertDate = DateTime.Now; logWinLimit.IP = Common.MySpider.GetClientIP(); if (bll.AddWXLotteryLogV1(logWinLimit))//下一步 { } apiResult.awardName = string.Format("{0}", lotteryRecord.WXAwardName); apiResult.isAward = true; //告诉前端你已经中过奖了 apiResult.errorCode = (int)BLLJIMP.Enums.APIErrCode.LotteryHaveRecord;; //LotteryHaveRecord } goto outoff; } } if (!apiResult.isStart) { apiResult.errorCode = (int)BLLJIMP.Enums.APIErrCode.NotStart; apiResult.awardName = "刮奖未开启"; apiResult.isStart = false; goto outoff; } #endregion #region 内定中奖 List <WXLotteryWinningDataV1> winData = bll.GetList <WXLotteryWinningDataV1>(string.Format("LotteryId={0}", model.LotteryID)); if (winData.SingleOrDefault(p => p.UserId.Equals(currentUserInfo.UserID)) != null) { //给默认中奖者中奖 WXLotteryRecordV1 record = new WXLotteryRecordV1(); record.InsertDate = DateTime.Now; record.LotteryId = model.LotteryID; record.Token = "0"; record.WXAwardsId = winData.Single(p => p.UserId.Equals(currentUserInfo.UserID)).WXAwardsId; record.UserId = currentUserInfo.UserID; record.IsGetPrize = 0; if (bll.AddWXLotteryRecordV1(record)) { apiResult.awardName = string.Format("{0}", winData.Single(p => p.UserId.Equals(currentUserInfo.UserID)).WXAwardName); apiResult.isAward = true; } goto outoff; } //设置默认中奖 #endregion #region 外部积分读取 var isSyncYike = new BLLJIMP.BLLCommRelation().ExistRelation(BLLJIMP.Enums.CommRelationType.SyncYike, currentUserInfo.WebsiteOwner, ""); Open.EZRproSDK.Client zrClient = new Open.EZRproSDK.Client(); if (isSyncYike) { var getBonusResp = zrClient.GetBonus(currentUserInfo.Ex1, currentUserInfo.Ex2, currentUserInfo.Phone); if (getBonusResp != null) { currentUserInfo.TotalScore = getBonusResp.Bonus; } else { currentUserInfo.TotalScore = 0; } } #endregion #region 使用宏巍积分 Open.HongWareSDK.Client hongWareClient = new Open.HongWareSDK.Client(websiteInfo.WebsiteOwner); if (websiteInfo.IsUnionHongware == 1) { var hongWareMemberInfo = hongWareClient.GetMemberInfo(currentUserInfo.WXOpenId); if (hongWareMemberInfo.member != null) { currentUserInfo.TotalScore = hongWareMemberInfo.member.point; } else { currentUserInfo.TotalScore = 0; } } #endregion string tempMsg = ""; #region 抽奖限制 总共多少次或每天几次 用购买的刮奖次数除外 #region 总共多少次 if (model.LuckLimitType.Equals(0))//总共多少次 { int count = bll.GetWXLotteryLogCountV1(model.LotteryID, currentUserInfo.UserID); if (count >= model.MaxCount) { //判读是否够积分 if (model.UsePoints > 0) { if (currentUserInfo.TotalScore >= model.UsePoints) { //扣积分 if (isSyncYike) { var resp = zrClient.BonusUpdate(currentUserInfo.Ex2, -model.UsePoints, "抽奖减少积分"); } else { bllUser.AddUserScoreDetail(currentUserInfo.UserID, EnumStringHelper.ToString(ScoreDefineType.Lottery), bllUser.WebsiteOwner, out tempMsg, -model.UsePoints, "抽奖减少积分", "", false); } } else { if (currentUserInfo.LotteryCount == 0) { apiResult.errorCode = (int)BLLJIMP.Enums.APIErrCode.IntegralProblem; apiResult.awardName = "积分不足"; apiResult.isStart = false; goto outoff; } else { //剩余刮奖次数减1 if (bll.Update(currentUserInfo, string.Format(" LotteryCount-=1"), string.Format("AutoId={0}", currentUserInfo.AutoID)) <= 0) { apiResult.errorCode = (int)BLLJIMP.Enums.APIErrCode.IntegralProblem; apiResult.awardName = "谢谢参与"; apiResult.isStart = false; goto outoff; } } } } else { apiResult.errorCode = (int)BLLJIMP.Enums.APIErrCode.CountIsOver; apiResult.awardName = "谢谢参与"; goto outoff; } } } #endregion #region 每天多少次 else { //判读一天有没有超出 int count = bll.GetWXLotteryLogCountV1(model.LotteryID, currentUserInfo.UserID, DateTime.Now); if (count >= model.MaxCount) { //判读是否够积分 if (model.UsePoints > 0) { if (currentUserInfo.TotalScore >= model.UsePoints) { if (isSyncYike) { var resp = zrClient.BonusUpdate(currentUserInfo.Ex2, -model.UsePoints, "抽奖减少积分"); } else { //扣积分 bllUser.AddUserScoreDetail(currentUserInfo.UserID, EnumStringHelper.ToString(ScoreDefineType.Lottery), bllUser.WebsiteOwner, out tempMsg, -model.UsePoints, "抽奖减少积分", "", false); } } else { if (currentUserInfo.LotteryCount == 0) { apiResult.errorCode = (int)BLLJIMP.Enums.APIErrCode.IntegralProblem; apiResult.awardName = "积分不足"; apiResult.isStart = false; goto outoff; } else { //剩余刮奖次数减1 if (bll.Update(currentUserInfo, string.Format(" LotteryCount-=1"), string.Format("AutoId={0}", currentUserInfo.AutoID)) <= 0) { apiResult.errorCode = (int)BLLJIMP.Enums.APIErrCode.IntegralProblem; apiResult.awardName = "谢谢参与"; apiResult.isStart = false; goto outoff; } } } } else { apiResult.errorCode = (int)BLLJIMP.Enums.APIErrCode.CountIsOver; apiResult.awardName = "谢谢参与"; goto outoff; } } } #endregion #endregion WXLotteryLogV1 log = new WXLotteryLogV1(); log.LotteryId = model.LotteryID; log.UserId = currentUserInfo.UserID; log.InsertDate = DateTime.Now; log.IP = Common.MySpider.GetClientIP(); if (bll.AddWXLotteryLogV1(log))//下一步 { #region 奖池生成 List <AwardModel> awardModelList = new List <AwardModel>(); //奖池 List <WXAwardsV1> awardsList = bll.GetAwardsListV1(model.LotteryID).Where(p => p.WinCount < p.PrizeCount).ToList(); //奖品列表 //已经中完的不参与 foreach (var item in awardsList) { for (int i = 1; i <= item.Probability; i++) { AwardModel m = new AwardModel(); m.AwardID = item.AutoID; m.PrizeName = item.PrizeName; m.AwardsType = item.AwardsType; m.Img = item.Img; m.Value = item.Value; awardModelList.Add(m); } } if (awardsList.Sum(p => p.Probability) < 100)//总中奖概率小于100 补足 { for (int i = 1; i <= (100 - (awardsList.Sum(p => p.Probability))); i++) { AwardModel m = new AwardModel(); m.AwardID = 0; m.PrizeName = "谢谢参与"; awardModelList.Add(m); } } #endregion //打乱数组顺序 awardModelList = GetRandomList <AwardModel>(awardModelList); Random rand = new Random(); int index = rand.Next(0, awardModelList.Count); #region 抽奖 if (awardModelList[index].AwardID > 0)//随机数中奖 { string sqlUpdate = string.Format(" Update ZCJ_WXAwardsV1 Set WinCount+=1 where AutoID={0} And WinCount<PrizeCount ", awardModelList[index].AwardID); if (ZentCloud.ZCBLLEngine.BLLBase.ExecuteSql(sqlUpdate) > 0) { int token = rand.Next(1111, 9999); //插入中奖记录 WXLotteryRecordV1 record = new WXLotteryRecordV1(); record.InsertDate = DateTime.Now; record.LotteryId = model.LotteryID; record.Token = token.ToString(); record.WXAwardsId = awardModelList[index].AwardID; record.UserId = currentUserInfo.UserID; record.IsGetPrize = 0; if (bll.AddWXLotteryRecordV1(record)) { apiResult.awardName = string.Format("{0}", awardModelList[index].PrizeName); apiResult.isAward = true; apiResult.awardsType = awardModelList[index].AwardsType; apiResult.img = awardModelList[index].Img; apiResult.value = awardModelList[index].Value; if (apiResult.awardsType == 2) { BLLJIMP.BLLCardCoupon bllCardCoupon = new BLLJIMP.BLLCardCoupon(); var coupon = bllCardCoupon.GetCardCoupon(int.Parse(apiResult.value)); apiResult.cardcoupon_name = coupon.Name; apiResult.cardcoupon_type = coupon.CardCouponType; apiResult.cardcoupon_start = coupon.ValidFrom == null ? "" : coupon.ValidFrom.Value.ToShortDateString(); apiResult.cardcoupon_end = coupon.ValidTo == null ? "" : coupon.ValidTo.Value.ToShortDateString(); if (coupon.ExpireTimeType == "1") { apiResult.cardcoupon_start = DateTime.Now.ToShortDateString(); apiResult.cardcoupon_end = DateTime.Now.AddDays(Convert.ToInt32(coupon.ExpireDay)).ToShortDateString(); } } if (apiResult.awardsType == 1 || apiResult.awardsType == 2) { //中奖记录标记为已经领奖 WXLotteryRecordV1 rec = bll.Get <WXLotteryRecordV1>(string.Format(" UserId='{0}' And LotteryId={1} And WXAwardsId={2} And Token='{3}'", record.UserId, record.LotteryId, record.WXAwardsId, record.Token)); if (rec != null) { rec.IsGetPrize = 1; bll.Update(rec); } } goto outoff; } else { goto outoff; } } else { goto outoff; } //} //else //{ //#region 虽然随机数中奖,但是奖项数量已经达到上限,重新随机抽奖 // //if (reCount >= 5) // //{ // goto outoff; // //} // //reCount++; // //goto start; //} } else { //随机数未中奖 } #endregion } outoff: if (!string.IsNullOrEmpty(context.Request["callback"])) { return(string.Format("{0}({1})", context.Request["callback"], Common.JSONHelper.ObjectToJson(apiResult))); } return(Common.JSONHelper.ObjectToJson(apiResult)); } catch (Exception ex) { return(ex.ToString()); } }
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)); }
public void ProcessRequest(HttpContext context) { StringBuilder sbWhere = new StringBuilder(); sbWhere.AppendFormat(" WebsiteOwner= '{0}' And IsNull(IsMain,0)=0", bllMall.WebsiteOwner); string fromDate = context.Request["from_date"]; //开始日期 string toDate = context.Request["to_date"]; //结束日期 string status = context.Request["status"]; //订单状态 string orderIds = context.Request["oids"]; //订单号 string userAutoIds = context.Request["user_aids"]; //用户自动编号 string userTags = context.Request["user_tags"]; //用户标签 string isYuYueOrder = context.Request["is_yuyue"]; //是否是会议室预约和资源预约订单 string supplierUserId = context.Request["supplier_userid"]; //供应商账号 //订单类型 //0 商城订单 //1 礼品订单 //2 团购订单 //3 无 //4 活动订单 //5 会议室预订 //6 导师预约 string orderType = context.Request["order_type"]; if (!string.IsNullOrEmpty(orderType)) { if (orderType == "5") { sbWhere.AppendFormat(" And ArticleCategoryType='MeetingRoom'"); } else if (orderType == "6") { sbWhere.AppendFormat(" And ArticleCategoryType='BookingTutor'"); } else { sbWhere.AppendFormat(" And OrderType={0}", orderType); } } if (!string.IsNullOrEmpty(fromDate)) { sbWhere.AppendFormat(" And InsertDate>='{0}'", fromDate); } if (!string.IsNullOrEmpty(toDate)) { sbWhere.AppendFormat(" And InsertDate<='{0}'", toDate); } if (orderType == "2" && !string.IsNullOrEmpty(status)) { status = ConvertGroupbuyStatus(status); sbWhere.AppendFormat(" And GroupBuyStatus in({0})", status); } if (orderType == "2") { sbWhere.AppendFormat(" And PaymentStatus=1 ", status); } if ((!string.IsNullOrEmpty(status)) && (status != "退款退货") && orderType != "2") { status = "'" + status.Replace(",", "','") + "'"; sbWhere.AppendFormat(" And Status in({0})", status); } if (status == "退款退货") { sbWhere.AppendFormat(" And IsRefund=1 "); } if (!string.IsNullOrEmpty(orderIds)) { orderIds = "'" + orderIds.Replace(",", "','") + "'"; sbWhere.AppendFormat(" And OrderID in({0}) ", orderIds); } if (bllUser.IsSupplier(currentUserInfo)) { sbWhere.AppendFormat(" And SupplierUserId ='{0}' ", currentUserInfo.UserID); } if ((!string.IsNullOrEmpty(userAutoIds)) || (!string.IsNullOrEmpty(userTags))) { string userIds = ""; if (!string.IsNullOrEmpty(userAutoIds)) { foreach (var userAutoId in userAutoIds.Split(',')) { var userInfo = bllUser.GetUserInfoByAutoID(int.Parse(userAutoId)); if (userInfo != null) { userIds += string.Format("'{0}',", userInfo.UserID); } } } if (!string.IsNullOrEmpty(userTags)) { foreach (string tag in userTags.Split(',')) { List <UserInfo> userList = bllUser.GetList <UserInfo>(string.Format(" Websiteowner='{0}' And TagName like '%{1}%'", bllUser.WebsiteOwner, tag)); foreach (var userInfo in userList) { userIds += string.Format("'{0}',", userInfo.UserID); } } } userIds = userIds.TrimEnd(','); sbWhere.AppendFormat(" And OrderUserId in({0}) ", userIds); } if (!string.IsNullOrEmpty(supplierUserId)) { if (supplierUserId == "none") { sbWhere.AppendFormat(" And (SupplierUserId='' Or SupplierUserId IS NULL)", ""); } else { sbWhere.AppendFormat(" And SupplierUserId ='{0}' ", supplierUserId); } } sbWhere.AppendFormat(" Order by InsertDate Desc "); List <WXMallOrderInfo> orderList = bllMall.GetList <WXMallOrderInfo>(sbWhere.ToString()); //sbExport.Append("会员ID\t"); DataTable dt1 = new DataTable(); DataTable dt2 = new DataTable(); dt1.Columns.Add("会员ID"); dt1.Columns.Add("线上卡号"); dt1.Columns.Add("OpenId"); dt1.Columns.Add("订单时间"); dt1.Columns.Add("父订单编号"); dt1.Columns.Add("订单号"); dt1.Columns.Add("订单状态"); dt1.Columns.Add("商品编号"); dt1.Columns.Add("商品编码"); dt1.Columns.Add("商品名称"); if (!string.IsNullOrEmpty(isYuYueOrder)) { dt1.Columns.Add("预约时间"); } dt1.Columns.Add("商品原价"); dt1.Columns.Add("商品均摊价格"); dt1.Columns.Add("商品单价"); dt1.Columns.Add("商品规格"); dt1.Columns.Add("商品条码"); dt1.Columns.Add("商品数量"); dt1.Columns.Add("商品总金额"); dt1.Columns.Add("运费"); dt1.Columns.Add("实付金额"); dt1.Columns.Add("收货人姓名"); dt1.Columns.Add("电话"); dt1.Columns.Add("收货地址"); dt1.Columns.Add("留言"); dt1.Columns.Add("支付状态"); dt1.Columns.Add("基础价"); dt1.Columns.Add("使用积分"); dt1.Columns.Add("使用余额"); dt1.Columns.Add("优惠券名称"); dt1.Columns.Add("优惠券ID"); dt1.Columns.Add("退款"); dt1.Columns.Add("主订单号"); dt1.Columns.Add("商户名称"); dt1.Columns.Add("商家备注"); dt1.Columns.Add("快递公司"); dt1.Columns.Add("快递单号"); dt2.Columns.Add("订单时间"); dt2.Columns.Add("订单号"); dt2.Columns.Add("订单状态"); dt2.Columns.Add("商品编号"); dt2.Columns.Add("商品名称"); dt2.Columns.Add("商品规格"); dt2.Columns.Add("商品数量"); dt2.Columns.Add("实付金额"); dt2.Columns.Add("收货人姓名"); dt2.Columns.Add("电话"); dt2.Columns.Add("收货地址"); dt2.Columns.Add("支付状态"); dt2.Columns.Add("退款"); dt2.Columns.Add("主订单号"); dt2.Columns.Add("商户名称"); dt2.Columns.Add("商家备注"); dt2.Columns.Add("快递公司"); dt2.Columns.Add("快递单号"); for (int i = 0; i < orderList.Count; i++) { var userInfo = bllUser.GetUserInfo(orderList[i].OrderUserID); if (userInfo == null) { userInfo = new UserInfo(); } string cardId = string.Empty; string cardName = string.Empty; if (!string.IsNullOrEmpty(orderList[i].MyCouponCardId)) { switch (orderList[i].CouponType) { case 0: MyCardCoupons myCardModel = bllCardcoupon.GetMyCardCoupon(Convert.ToInt32(orderList[i].MyCouponCardId)); if (myCardModel != null) { CardCoupons coupns = bllCardcoupon.GetCardCoupon(myCardModel.CardId); cardId = coupns.CardId.ToString(); cardName = coupns.Name; } break; case 1: int cardIdInt = Convert.ToInt32(orderList[i].MyCouponCardId); StoredValueCardRecord storedCard = bllStoredValueCard.GetStoredValueCardRecord(cardIdInt); if (storedCard != null) { StoredValueCard cardModel = bllStoredValueCard.GetStoredValueCard(storedCard.CardId); cardId = cardModel.AutoId.ToString(); cardName = cardModel.Name; } break; default: break; } } foreach (var item in bllMall.GetOrderDetailsList(orderList[i].OrderID)) { if (orderList[i].IsRefund == 1 && string.IsNullOrEmpty(item.RefundStatus) && status == "退款退货") { continue; } DataRow newRow = dt1.NewRow(); DataRow newRow1 = dt2.NewRow(); newRow["会员ID"] = userInfo.AutoID.ToString(); newRow["OpenId"] = userInfo.WXOpenId; newRow["订单时间"] = orderList[i].InsertDate.ToString(); newRow1["订单时间"] = orderList[i].InsertDate.ToString(); WXMallProductInfo product = bllMall.GetProduct(item.PID); switch (orderList[i].OrderType) { case 0: newRow["父订单编号"] = ""; break; case 1: newRow["父订单编号"] = orderList[i].ParentOrderId; break; case 2: newRow["父订单编号"] = orderList[i].GroupBuyParentOrderId; break; default: break; } newRow["订单号"] = orderList[i].OrderID; newRow1["订单号"] = orderList[i].OrderID; newRow["订单状态"] = orderList[i].Status; newRow1["订单状态"] = orderList[i].Status; newRow["商品编号"] = product == null ? "" : product.PID; newRow1["商品编号"] = product == null ? "" : product.PID; newRow["商品编码"] = product == null ? "" : product.ProductCode; newRow["商品名称"] = product == null ? item.SkuShowProp : product.PName; newRow1["商品名称"] = product == null ? item.SkuShowProp : product.PName; if (!string.IsNullOrEmpty(isYuYueOrder)) { if (isYuYueOrder == "MeetingRoom") { if (!string.IsNullOrEmpty(product.RelationProductId)) { newRow["预约时间"] = item.StartDate.ToString("yyyy-MM-dd HH:mm") + "-" + item.EndDate.ToString("HH:mm"); } else { newRow["预约时间"] = ""; } } else { newRow["预约时间"] = item.StartDate.ToString("yyyy-MM-dd HH:mm") + "-" + item.EndDate.ToString("HH:mm"); } } newRow["商品原价"] = product.PreviousPrice; newRow["商品均摊价格"] = item.PaymentFt; newRow["商品单价"] = item.OrderPrice; if (item.SkuId.HasValue) { newRow["商品规格"] = item.SkuShowProp; newRow1["商品规格"] = item.SkuShowProp; newRow["商品条码"] = item.SkuId; } else { newRow["商品规格"] = ""; newRow1["商品规格"] = ""; newRow["商品条码"] = ""; } newRow["商品数量"] = item.TotalCount; newRow1["商品数量"] = item.TotalCount; newRow["商品总金额"] = item.TotalCount * item.OrderPrice; newRow["运费"] = orderList[i].Transport_Fee; newRow["实付金额"] = orderList[i].TotalAmount; newRow1["实付金额"] = orderList[i].TotalAmount; newRow["收货人姓名"] = orderList[i].Consignee; newRow1["收货人姓名"] = orderList[i].Consignee; newRow["电话"] = orderList[i].Phone; newRow1["电话"] = orderList[i].Phone; newRow["收货地址"] = orderList[i].ReceiverProvince + orderList[i].ReceiverCity + orderList[i].ReceiverDist + orderList[i].Address; newRow1["收货地址"] = orderList[i].ReceiverProvince + orderList[i].ReceiverCity + orderList[i].ReceiverDist + orderList[i].Address; newRow["留言"] = orderList[i].OrderMemo; newRow["支付状态"] = ConvertPaymentStatus(orderList[i].PaymentStatus); newRow1["支付状态"] = ConvertPaymentStatus(orderList[i].PaymentStatus); newRow["基础价"] = item.BasePrice; newRow["使用积分"] = orderList[i].UseScore; newRow["使用余额"] = orderList[i].UseAmount; newRow["优惠券名称"] = cardName; newRow["优惠券ID"] = cardId; newRow["退款"] = ConvertRefundStatus(item.RefundStatus); newRow1["退款"] = ConvertRefundStatus(item.RefundStatus); newRow["主订单号"] = orderList[i].ParentOrderId; newRow1["主订单号"] = orderList[i].ParentOrderId; newRow["商户名称"] = orderList[i].SupplierName; newRow1["商户名称"] = orderList[i].SupplierName; newRow["商家备注"] = orderList[i].Ex21; newRow1["商家备注"] = orderList[i].Ex21; newRow["快递公司"] = orderList[i].ExpressCompanyName; newRow1["快递公司"] = orderList[i].ExpressCompanyName; newRow["快递单号"] = orderList[i].ExpressNumber; newRow1["快递单号"] = orderList[i].ExpressNumber; newRow["线上卡号"] = userInfo.Ex2; dt1.Rows.Add(newRow); dt2.Rows.Add(newRow1); } //if (orderList[i].OrderType == 2)//团购订单 //{ // foreach (var item in bllMall.GetList<WXMallOrderInfo>(string.Format(" GroupBuyParentOrderId='{0}' And PaymentStatus=1", orderList[i].OrderID))) // { // foreach (var detail in bllMall.GetOrderDetailsList(item.OrderID)) // { // DataRow nowRow1 = dt1.NewRow(); // DataRow nowRow2 = dt2.NewRow(); // WXMallProductInfo product = bllMall.GetProduct(detail.PID); // nowRow1["订单时间"] = item.InsertDate.ToString(); // nowRow2["订单时间"] = item.InsertDate.ToString(); // nowRow1["父订单编号"] = item.GroupBuyParentOrderId; // nowRow1["订单号"] = item.OrderID; // nowRow2["订单号"] = item.OrderID; // nowRow1["订单状态"] = item.Status; // nowRow2["订单状态"] = item.Status; // nowRow1["商品编号"] = product == null ? "" : product.PID; // nowRow2["商品编号"] = product == null ? "" : product.PID; // nowRow1["商品编码"] = product == null ? "" : product.ProductCode; // nowRow1["商品名称"] = product == null ? "" : product.PName; // nowRow2["商品名称"] = product == null ? "" : product.PName; // nowRow1["商品原价"] = product.PreviousPrice; // nowRow1["商品均摊价格"] = detail.PaymentFt; // nowRow1["商品单价"] = detail.OrderPrice; // if (detail.SkuId.HasValue) // { // nowRow1["商品规格"] = detail.SkuShowProp; // nowRow2["商品规格"] = detail.SkuShowProp; // nowRow1["商品条码"] = detail.SkuId; // } // else // { // nowRow1["商品规格"] = ""; // nowRow2["商品规格"] = ""; // nowRow1["商品条码"] = ""; // } // nowRow1["商品数量"] = detail.TotalCount; // nowRow2["商品数量"] = detail.TotalCount; // nowRow1["商品总金额"] = detail.TotalCount * detail.OrderPrice; // nowRow1["运费"] = item.Transport_Fee; // nowRow1["实付金额"] = item.TotalAmount; // nowRow2["实付金额"] = item.TotalAmount; // nowRow1["收货人姓名"] = item.Consignee; // nowRow2["收货人姓名"] = item.Consignee; // nowRow1["电话"] = item.Phone; // nowRow2["电话"] = item.Phone; // nowRow1["收货地址"] = item.ReceiverProvince + item.ReceiverCity + item.ReceiverDist + item.Address; // nowRow2["收货地址"] = item.ReceiverProvince + item.ReceiverCity + item.ReceiverDist + item.Address; // nowRow1["留言"] = item.OrderMemo; // nowRow1["支付状态"] = ConvertPaymentStatus(item.PaymentStatus); // nowRow2["支付状态"] = ConvertPaymentStatus(item.PaymentStatus); // nowRow1["基础价"] =detail.BasePrice; // nowRow1["使用积分"] = orderList[i].UseScore; // nowRow1["使用余额"] = orderList[i].UseAmount; // nowRow1["优惠券名称"] = cardName; // nowRow1["优惠券ID"] = cardId; // nowRow1["退款"] =ConvertRefundStatus(detail.RefundStatus); // nowRow2["退款"] = ConvertRefundStatus(detail.RefundStatus); // dt1.Rows.Add(nowRow1); // dt2.Rows.Add(nowRow2); // } // } //} } dt1.TableName = "订单列表"; dt2.TableName = "精简订单列表"; DataTable[] dt3 = { dt1, dt2 }; DataLoadTool.ExportDataTable(dt3, string.Format("{0}_data.xls", DateTime.Now.ToString())); }