private void PopulateModel(CouponDetail model, IDictionary values) { string ID = nameof(CouponDetail.id); string COUPON_CODE = nameof(CouponDetail.coupon_code); string COUPON_NAME = nameof(CouponDetail.coupon_name); string COUPON_TYPE = nameof(CouponDetail.coupon_type); string VALUE = nameof(CouponDetail.value); string STATE = nameof(CouponDetail.state); string START_PERIOD = nameof(CouponDetail.start_period); string END_PERIOD = nameof(CouponDetail.end_period); string CREATED_AT = nameof(CouponDetail.created_at); if (values.Contains(ID)) { model.id = Convert.ToInt32(values[ID]); } if (values.Contains(COUPON_CODE)) { model.coupon_code = Convert.ToInt32(values[COUPON_CODE]); } if (values.Contains(COUPON_NAME)) { model.coupon_name = Convert.ToString(values[COUPON_NAME]); } if (values.Contains(COUPON_TYPE)) { model.coupon_type = Convert.ToString(values[COUPON_TYPE]); } if (values.Contains(VALUE)) { model.value = Convert.ToString(values[VALUE]); } if (values.Contains(STATE)) { model.state = Convert.ToString(values[STATE]); } if (values.Contains(START_PERIOD)) { model.start_period = Convert.ToDateTime(values[START_PERIOD]); } if (values.Contains(END_PERIOD)) { model.end_period = Convert.ToDateTime(values[END_PERIOD]); } if (values.Contains(CREATED_AT)) { model.created_at = Convert.ToDateTime(values[CREATED_AT]); } }
public ActionResult GetCouponsDetails(CouponDetail coupondetail, int page = 1, int rows = 20) { PageInfo pageInfo = new PageInfo() { Page = page, Rows = rows }; int totalCount = 0; var result = CouponsService.GetCouponsDetails(coupondetail, pageInfo, out totalCount); return(Json(new { total = totalCount, rows = result })); }
public CouponDetailModel ToCouponDetailModel(CouponDetail couponDetail) { if (couponDetail == null) { return(null); } return(new CouponDetailModel { Id = couponDetail.Id.ToString(), Code = couponDetail.Code, Amount = couponDetail.Amount, Description = couponDetail.Description, }); }
public HttpResponseMessage Post(FormDataCollection form) { var model = new CouponDetail(); var values = JsonConvert.DeserializeObject <IDictionary>(form.Get("values")); PopulateModel(model, values); Validate(model); if (!ModelState.IsValid) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, GetFullErrorMessage(ModelState))); } var result = _context.CouponDetails.Add(model); _context.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.Created, result.id)); }
public ActionResult CouponsExportExcel(CouponDetail couponsDetail, string memberMobile) { EFDbContext _context = new EFDbContext(); var memberMobiles = ""; if (memberMobile != "") { var customer = _context.Customers.Where(p => p.Mobile.Contains(memberMobile) && p.IsDeleted != 1); if (customer != null) { foreach (var item in customer) { memberMobiles += item.Id + ","; } } } OpResult result = CouponsService.CouponsExport(couponsDetail, memberMobiles); return(Json(result)); }
/// <summary> /// This method is used to save coupon details on the basis of coupon Id in CouponDetail Table /// </summary> /// <param name="couponDetails"></param> /// <param name="CouponId"></param> /// <returns></returns> private bool SaveCouponDetails(CouponModel couponDetails, int CouponId) { bool isSaved; List <CouponDetail> listCouponDetails = new List <CouponDetail>(); CouponDetail objCouponDetails; foreach (CouponDetailsModel items in couponDetails.CouponDetails) { ///Updating Coupon Id to all new Coupons objCouponDetails = new CouponDetail(); objCouponDetails.CouponCode = CouponId; objCouponDetails.CouponNo = items.CouponNo; objCouponDetails.IsRedeem = items.IsRedeem; objCouponDetails.RedeemDate = items.RedeemDate; listCouponDetails.Add(objCouponDetails); } ///Insett in Coupon Detail Table isSaved = _couponDetailsRepository.SaveCoupons(listCouponDetails); return(isSaved); }
/// <summary> /// 新增优惠券从表数据 /// </summary> /// <param name="coupons">优惠券主表数据</param> /// <param name="customers">优惠券绑定客户信息</param> /// <returns></returns> public OpResult CreateCouponsDetail(Coupons coupons, Customers customers, Random _random) { OpResult result = new OpResult() { Successed = false }; try { CouponDetail couponDetail = new CouponDetail() { Id = CommonRules.GUID }; couponDetail.CouponId = coupons.Id; // 优惠券id couponDetail.CouponSN = CommonRules.CouponsNo(12, _random); //优惠券号 couponDetail.MemberId = customers.Id; couponDetail.UseState = 0; //生成状态 couponDetail.CouponBatch = coupons.CouponBatch; couponDetail.Title = coupons.Title; couponDetail.Denomination = coupons.Denomination; couponDetail.SalesMoney = coupons.SalesMoney; couponDetail.ConditionMoney = coupons.ConditionMoney; couponDetail.BeginValidDate = coupons.BeginValidDate; couponDetail.EndValidDate = coupons.EndValidDate; couponDetail.CreatedOn = DateTime.Now; couponDetail.CreatedBy = coupons.CreatedBy; couponDetail.IsDeleted = 0; _context.CouponDetails.Add(couponDetail); result.Successed = true; } catch (Exception e) { result.Message = e.Message; } return(result); }
public OperationResult CreateOrder(UserForm userForm, OrderData data, out string productName) { var result = new OperationResult(); //尋找是否有可用Coupon CouponDetail couponDetail = CheckCoupon(data.AccountName, data.CouponDetailId); if (couponDetail == null) { data.CouponDetailId = null; } else { data.CouponDetailId = couponDetail.CouponDetailId; } byte?invoiceDonateTo; if (userForm.InvoiceDonateTo == null) { invoiceDonateTo = null; } else { invoiceDonateTo = byte.Parse(userForm.InvoiceDonateTo); } UserFavorite favorite = _repository.GetAll <UserFavorite>() .First(x => x.FavoriteId == data.FavoriteId); PackageProduct package = null; List <UserDefinedProduct> userDefinedList = null; if (favorite.IsPackage) { package = GetPackage(favorite); productName = package.Name; } else { userDefinedList = GetUserDefinedList(favorite); productName = userDefinedList[0].Name; } using (var transaction = _context.Database.BeginTransaction()) { try { Order order = new Order { OrderId = Guid.NewGuid(), AccountName = data.AccountName, FullName = userForm.FullName, Email = userForm.Email, Phone = userForm.Phone, DateService = DateTime.Parse(userForm.DateService), Address = $"{userForm.County}{userForm.District}{userForm.Address}", Remark = userForm.Remark == null ? string.Empty : userForm.Remark, OrderState = (byte)OrderState.Unpaid, Rate = null, Comment = string.Empty, CouponDetailId = data.CouponDetailId, PaymentType = string.Empty, InvoiceType = byte.Parse(userForm.InvoiceType), InvoiceDonateTo = invoiceDonateTo, MerchantTradeNo = data.MerchantTradeNo, TradeNo = string.Empty, CreateTime = data.Now, EditTime = data.Now, CreateUser = data.AccountName, EditUser = data.AccountName, }; _repository.Create <Order>(order); _context.SaveChanges(); OrderDetail od = new OrderDetail { OrderDetailId = Guid.NewGuid(), OrderId = order.OrderId, FavoriteId = data.FavoriteId, FinalPrice = data.FinalPrice, ProductName = productName, CreateTime = data.Now, EditTime = data.Now, CreateUser = data.AccountName, EditUser = data.AccountName, }; _repository.Create <OrderDetail>(od); _context.SaveChanges(); if (favorite.IsPackage) { List <int?> roomTypes = new List <int?> { package.RoomType, package.RoomType2 }; if (package.RoomType3 >= 0) { roomTypes.Add(package.RoomType3); } List <int?> squareFeets = new List <int?> { package.Squarefeet, package.Squarefeet2 }; if (package.Squarefeet3 >= 0) { squareFeets.Add(package.Squarefeet3); } OrderPackage orderPackage = new OrderPackage { OrderId = order.OrderId, RoomTypes = string.Join(",", roomTypes), SquareFeets = string.Join(",", squareFeets), ServiceItems = package.ServiceItem, Hour = package.Hour, Price = package.Price, CreateTime = data.Now, EditTime = data.Now, CreateUser = data.AccountName, EditUser = data.AccountName, }; _repository.Create <OrderPackage>(orderPackage); } else { foreach (var item in userDefinedList) { OrderUserDefined orderUserDefined = new OrderUserDefined { OrderId = order.OrderId, RoomType = item.RoomType, SquareFeet = item.Squarefeet, ServiceItems = item.ServiceItems, Hour = item.Hour, Price = item.Price, CreateTime = data.Now, EditTime = data.Now, CreateUser = data.AccountName, EditUser = data.AccountName, }; _repository.Create <OrderUserDefined>(orderUserDefined); } } _context.SaveChanges(); if (couponDetail != null) { couponDetail.State = (int)UseState.Used; _context.SaveChanges(); } result.IsSuccessful = true; transaction.Commit(); } catch (Exception ex) { result.IsSuccessful = false; result.Exception = ex; transaction.Rollback(); } } return(result); }
/// <summary> /// 创建优惠券 /// </summary> /// <param name="coupons">优惠券实体</param> /// <returns>成功或失败,失败信息</returns> public OpResult CreateCoupons(Coupons coupons) { OpResult result = new OpResult() { Successed = false }; bool isEdit = false; try { if (coupons.Id == null) { //id为空 添加id coupons.Id = CommonRules.GUID; coupons.CouponBatch = CommonRules.CommonNoRules("couponbatch"); } else { isEdit = true; } //如果优惠券是要生成的则执行生成的代码 if (coupons.Status == 1) { if (coupons.GiveWay == 1) { //hstodo:检查短信条数 //if (coupons.IsSendSMS == 1 && coupons.DistributingType == 0) //{ // int SMSBalance = 0; // var SMSBalanceStr = EChiHelper.GetBalance_Normal(); // if (!string.IsNullOrEmpty(SMSBalanceStr)) // { // try // { // SMSBalance = int.Parse(SMSBalanceStr); // } // catch (Exception ex) // { // return OpResult.Fail("对不起,查询短信余额时发生错误,错误:" + SMSBalanceStr); // } // if (SMSBalance < coupons.Quantity) // { // return OpResult.Fail(string.Format("对不起,需要发送短信{0}条,短信余额剩余{1}条,短信余额不足,请充值。", coupons.Quantity, SMSBalance)); // } // } //} Random _random = new Random(); switch (coupons.GivenObjectType) { case 1: //1的时候是所有用户都加入数据 List <Customers> datas = new FCake.Bll.CustomersService().GetCustomerByWhere(a => a.IsDeleted != 1); coupons.Quantity = datas.Count(); foreach (var item in datas) { CreateCouponsDetail(coupons, item, _random); } break; case 2: //2的时候按会员等级来 List <Customers> customers = new FCake.Bll.CustomersService().GetCustomerByWhere(a => coupons.GivenObjectIds.Contains(a.MemberLevelValue.ToString())); coupons.Quantity = customers.Count(); foreach (var item in customers) { CreateCouponsDetail(coupons, item, _random); } break; case 3: //3的时候按指定用户来 List <Customers> customer = new FCake.Bll.CustomersService().GetCustomerByWhere(a => coupons.GivenObjectIds.Contains(a.Id)); if (coupons.DistributingType == 1) { var cu = customer.FirstOrDefault(); if (cu != null) { for (var i = 0; i < coupons.Quantity; i++) { CreateCouponsDetail(coupons, cu, _random); } } } else { coupons.Quantity = customer.Count(); foreach (var item in customer) { CreateCouponsDetail(coupons, item, _random); } } break; } } else { var createCount = coupons.Quantity; Random _random = new Random(); //不绑定客户生成优惠券 for (int i = 0; i < createCount; i++) { CouponDetail couponDetail = new CouponDetail() { Id = CommonRules.GUID }; couponDetail.CouponId = coupons.Id; // 优惠券id couponDetail.CouponSN = CommonRules.CouponsNo(12, _random); //优惠券号 //查询重复 var data = _context.CouponDetails.SingleOrDefault(p => p.CouponSN.Equals(couponDetail.CouponSN) && p.IsDeleted != 1); if (data != null) { createCount++; continue; } //couponDetail.MemberId = customers.Id; couponDetail.UseState = 0; //生成状态 couponDetail.Title = coupons.Title; couponDetail.CouponBatch = coupons.CouponBatch; couponDetail.Denomination = coupons.Denomination; couponDetail.SalesMoney = coupons.SalesMoney; couponDetail.ConditionMoney = coupons.ConditionMoney; couponDetail.BeginValidDate = coupons.BeginValidDate; couponDetail.EndValidDate = coupons.EndValidDate; couponDetail.CreatedOn = DateTime.Now; couponDetail.CreatedBy = coupons.CreatedBy; couponDetail.IsDeleted = 0; _context.CouponDetails.Add(couponDetail); } } } if (!isEdit) { _context.Coupons.Add(coupons); } else { var cdata = _context.Coupons.SingleOrDefault(p => p.Id.Equals(coupons.Id) && p.IsDeleted != 1); if (cdata != null) { cdata.CopyProperty(coupons); cdata.ModifiedOn = DateTime.Now; } } if (_context.SaveChanges() > 0) { result.Successed = true; result.Message = "创建优惠券成功!"; result.Code = coupons.Quantity.ToString(); #region 发送短信 if (coupons.IsSendSMS == 1 && coupons.Status == 1) { List <string> mobileList = new List <string>(); mobileList = GetMobileListByCouponId(coupons.Id); //将需要发送短信的号码加入result.Data中,导出Excel手动发送 result.Data = mobileList; } #endregion } else { result.Message = "创建优惠券失败!"; } } catch (Exception e) { result.Message = "创建优惠券发生异常!"; } return(result); }
/// <summary> /// 优惠券导出到excel /// </summary> /// <param name="coupons"></param> /// <param name="memberMobile"></param> /// <returns></returns> public OpResult CouponsExport(CouponDetail coupons, string memberMobile) { SqlParameter[] param = new SqlParameter[7]; if (coupons.BeginValidDate != new DateTime()) { param[0] = new SqlParameter("@beginValidDate", coupons.BeginValidDate); } else { param[0] = new SqlParameter("@beginValidDate", DBNull.Value); } if (coupons.EndValidDate != new DateTime()) { param[1] = new SqlParameter("@endValidDate", coupons.EndValidDate); } else { param[1] = new SqlParameter("@endValidDate", DBNull.Value); } if (coupons.CouponSN.IsNotNullOrEmpty()) { param[2] = new SqlParameter("@couponSN", coupons.CouponSN); } else { param[2] = new SqlParameter("@couponSN", DBNull.Value); } param[3] = new SqlParameter("@useState", SqlDbType.SmallInt, 2); param[3].Value = coupons.UseState; param[4] = new SqlParameter("@denomination", coupons.Denomination); if (memberMobile.IsNotNullOrEmpty()) { param[5] = new SqlParameter("@memberId", memberMobile); } else { param[5] = new SqlParameter("@memberId", DBNull.Value); } if (coupons.CouponBatch.IsNotNullOrEmpty()) { param[6] = new SqlParameter("@couponBatch", coupons.CouponBatch); } else { param[6] = new SqlParameter("@couponBatch", DBNull.Value); } try { DataTable dt = _context.Database.SqlQueryForDataTatable("EXEC dbo.Proc_CouponsExport @useState = @useState,@beginValidDate = @beginValidDate,@endValidDate = @endValidDate,@couponSN = @couponSN,@denomination = @denomination,@memberId = @memberId,@couponBatch=@couponBatch", param); if (dt.Rows.Count == 0) { return(OpResult.Fail("无可导出数据!")); } dt = UpdateDataTable(dt); for (int i = 0; i < dt.Rows.Count; i++) { if (dt.Rows[i]["ConditionMoney"].ToString() != "0.0000") { dt.Rows[i]["ConditionMoney"] = "满" + String.Format("{0:F}", Convert.ToDecimal(dt.Rows[i]["ConditionMoney"])) + "元使用"; } else { dt.Rows[i]["ConditionMoney"] = "无条件使用"; } } var fileName = DateTime.Now.ToString("yyyyMMddHHmmss"); string[] fields = { "CouponBatch", "CouponSN", "Title", "Denomination", "CouponStatus", "ConditionMoney", "FullName", "Mobile", "useFullName", "UseDate", "UseOrderSN", "BeginValidDate", "EndValidDate" }; string[] names = { "批次号", "优惠券券号", "优惠券名称", "金额", "使用状态", "使用条件", "拥有者姓名", "拥有者电话", "使用人", "使用时间", "使用订单", "有效期开始时间", "有效期结束时间" }; Dictionary <int, int> colWidth = new Dictionary <int, int>(); colWidth.Add(0, 20); colWidth.Add(1, 20); FCake.Core.Common.ExportExcel exceExport = new ExportExcel(); string fileUrl = exceExport.ToExcel(fileName, dt, fields, names, null, null, colWidth); return(OpResult.Success("导出成功!", null, fileUrl)); } catch (Exception ex) { return(OpResult.Fail("导出失败:" + ex.Message)); } }
/// <summary> /// 优惠券明细数据过滤 /// </summary> /// <param name="couponsNo"></param> /// <param name="user"></param> /// <param name="status"></param> /// <param name="faceVal"></param> /// <param name="beginTime"></param> /// <param name="endTime"></param> /// <param name="pageIndex"></param> /// <param name="pageSize"></param> /// <returns></returns> public dynamic GetCouponsDetails(CouponDetail coupondetail, PageInfo pageInfo, out int totalCount) { var query = _context.CouponDetails.Where(p => p.IsDeleted != 1); if (!coupondetail.CouponSN.IsNullOrEmpty()) { query = query.Where(p => p.CouponSN.Contains(coupondetail.CouponSN)); } if (!coupondetail.MemberId.IsNullOrEmpty()) {//coupondetail.MemberId 传手机号 var customer = new CustomersService().GetCustomerByWhere(a => a.Mobile.Contains(coupondetail.MemberId) && a.IsDeleted != 1); if (customer.Count() > 0) { string ids = ""; foreach (var item in customer) { ids += item.Id + ","; } query = query.Where(p => ids.Contains(p.MemberId)); } } //-1=全部 if (coupondetail.UseState != -1) { query = query.Where(a => a.UseState.Equals(coupondetail.UseState)); } if (coupondetail.CouponBatch.IsNotNullOrEmpty()) { query = query.Where(a => a.CouponBatch.Contains(coupondetail.CouponBatch)); } if (coupondetail.Denomination > 0) { query = query.Where(a => a.Denomination.Equals(coupondetail.Denomination)); } if (coupondetail.BeginValidDate != new DateTime()) { query = query.Where(a => a.BeginValidDate <coupondetail.BeginValidDate && a.EndValidDate> coupondetail.BeginValidDate); } //if (coupondetail.EndValidDate != new DateTime()) //{ // query = query.Where(a => a.EndValidDate < coupondetail.EndValidDate); //} totalCount = query.Count(); var result = (from x in query join cu1 in _context.Customers on x.MemberId equals cu1.Id into temp1 join cu2 in _context.Customers on x.UseMemberId equals cu2.Id into temp2 from cu1 in temp1.DefaultIfEmpty() from cu2 in temp2.DefaultIfEmpty() where x.IsDeleted != 1 select new { x.CouponSN, x.Denomination, x.SalesMoney, x.CreatedOn, x.BeginValidDate, x.EndValidDate, x.UseDate, x.UseState, x.UseMemberId, x.ConditionMoney, UseOrderSN = x.UseOrderSN, x.Title, OwnerMobile = cu1.Mobile, OwnerTel = cu1.Tel, OwnerFullName = cu1.FullName, UsedMobile = cu2.Mobile, UsedTel = cu2.Tel, UsedFullName = cu2.FullName, CouponBatch = x.CouponBatch }).OrderBy(p => p.UseState).ThenByDescending(p => p.CreatedOn).Skip((pageInfo.Page - 1) * pageInfo.Rows).Take(pageInfo.Rows); return(result.ToList()); }
public OperationResult CreateOrder(UserForm userForm, OrderData data, out string productName) { var result = new OperationResult(); //尋找是否有可用Coupon CouponDetail cd = CheckCoupon(data.AccountName, data.CouponDetailId); if (cd == null) { data.CouponDetailId = null; } else { data.CouponDetailId = cd.CouponDetailId; } byte?invoiceDonateTo; if (userForm.InvoiceDonateTo == null) { invoiceDonateTo = null; } else { invoiceDonateTo = byte.Parse(userForm.InvoiceDonateTo); } UserFavorite favorite = _repository.GetAll <UserFavorite>() .First(x => x.FavoriteId == data.FavoriteId); if (favorite.IsPackage) { productName = _repository.GetAll <PackageProduct>() .First(x => x.PackageProductId == favorite.PackageProductId) .Name; } else { productName = _repository.GetAll <UserDefinedProduct>() .First(x => x.UserDefinedId == favorite.UserDefinedId) .Name; } using (var transcation = _context.Database.BeginTransaction()) { try { Order order = new Order { OrderId = Guid.NewGuid(), AccountName = data.AccountName, FullName = userForm.FullName, Email = userForm.Email, Phone = userForm.Phone, DateService = DateTime.Parse(userForm.DateService), Address = $"{userForm.County}{userForm.District}{userForm.Address}", Remark = userForm.Remark == null ? string.Empty : userForm.Remark, OrderState = (byte)OrderState.Unpaid, Rate = null, Comment = string.Empty, CouponDetailId = data.CouponDetailId, PaymentType = string.Empty, InvoiceType = byte.Parse(userForm.InvoiceType), InvoiceDonateTo = invoiceDonateTo, MerchantTradeNo = data.MerchantTradeNo, TradeNo = string.Empty, CreateTime = data.Now, EditTime = data.Now, CreateUser = data.AccountName, EditUser = data.AccountName, }; _repository.Create <Order>(order); _context.SaveChanges(); OrderDetail od = new OrderDetail { OrderDetailId = Guid.NewGuid(), OrderId = order.OrderId, FavoriteId = data.FavoriteId, FinalPrice = data.FinalPrice, ProductName = productName, CreateTime = data.Now, EditTime = data.Now, CreateUser = data.AccountName, EditUser = data.AccountName, }; _repository.Create <OrderDetail>(od); _context.SaveChanges(); if (cd != null) { cd.State = (int)UseState.Used; _context.SaveChanges(); } result.IsSuccessful = true; transcation.Commit(); } catch (Exception ex) { result.IsSuccessful = false; result.Exception = ex; transcation.Rollback(); } } return(result); }