public static bool Query(string code, out CouponCodeDto couponCode) { couponCode = null; using (var DB = new SSMMEntities()) { var model = DB.CouponCode.SingleOrDefault(x => x.Code == code); if (model == null) { return(false); } //判断是否过期 if (model.Status != 1 || DateTime.Now > model.ExpirationTime) { return(false); } couponCode = new CouponCodeDto() { Id = model.Id, Code = model.Code, Des = model.Des, Amount = model.Amount, CreateTime = model.CreateTime, ExpirationTime = model.ExpirationTime, MaxCount = model.MaxCount, Status = model.Status }; return(true); } }
public JsonResult CheckPCode() { var pcode = RequestHelper.GetValue("pcode"); if (string.IsNullOrEmpty(pcode)) { return(Json(new { result = false, info = "优惠码不能为空!" }, JsonRequestBehavior.DenyGet)); } var info = ""; decimal amount = 0; var couponcode = new CouponCodeDto(); var result = CouponCodeService.Query(pcode, out couponcode); if (result) { amount = couponcode.Amount; info = $"优惠码有效!优惠金额:{amount}"; } else { info = "优惠码已过期或已超过最大使用次数!"; amount = 0; } return(Json(new { result = result, info = info, amount = amount }, JsonRequestBehavior.DenyGet)); }
public ActionResult AddPost() { var des = RequestHelper.GetValue("des"); var amount = RequestHelper.GetDecimal("amount"); var expirationtime = RequestHelper.GetInt("expirationtime"); if (amount <= 0 || expirationtime <= 0) { return(RedirectToAction("Add")); } var dto = new CouponCodeDto() { Code = FormatHelper.GetCouponCode(), Des = des, Amount = amount, CreateTime = DateTime.Now, ExpirationTime = DateTime.Now.AddDays(expirationtime), MaxCount = 0, Status = 1 }; var result = CouponCodeService.Add(dto); LogService.Info($"CouponCodeService.Add >>> {result} --- {dto.Code}"); return(RedirectToAction("List")); }
public void ConvertToDto_CouponCodeNotNull_ReturnSameProducts() { CouponCode couponCode = MockCouponCode(); CouponCodeDto couponCodeDto = couponCode.ConvertToDto(); Assert.Equal(couponCode.Products, couponCodeDto.Products); }
public void ConvertToDto_CouponCodeNotNull_ReturnSameMinAmount() { CouponCode couponCode = MockCouponCode(); CouponCodeDto couponCodeDto = couponCode.ConvertToDto(); Assert.Equal(couponCode.MinAmount, couponCodeDto.MinAmount); }
public void ConvertToDto_CouponCodeNotNull_ReturnSameId() { CouponCode couponCode = MockCouponCode(); CouponCodeDto couponCodeDto = couponCode.ConvertToDto(); Assert.Equal(couponCode.Id, couponCodeDto.Id); }
public void ConvertToDto_CouponCodeNotNull_ReturnSameCDateStart() { CouponCode couponCode = MockCouponCode(); CouponCodeDto couponCodeDto = couponCode.ConvertToDto(); Assert.Equal(couponCode.DateStart, couponCodeDto.DateStart); }
public void ConvertToDto_CouponCodeNotNull_ReturnSameDateExpire() { CouponCode couponCode = MockCouponCode(); CouponCodeDto couponCodeDto = couponCode.ConvertToDto(); Assert.Equal(couponCode.DateExpire, couponCodeDto.DateExpire); }
public void ConvertToDto_CouponCodeNotNull_ReturnSameCustomers() { CouponCode couponCode = MockCouponCode(); CouponCodeDto couponCodeDto = couponCode.ConvertToDto(); Assert.Equal(couponCode.Customers, couponCodeDto.Customers); }
public void ConvertToDto_CouponCodeNotNull_ReturnSameSubCategories() { CouponCode couponCode = MockCouponCode(); CouponCodeDto couponCodeDto = couponCode.ConvertToDto(); Assert.Equal(couponCode.SubCategories, couponCodeDto.SubCategories); }
/// <summary> /// 添加 /// </summary> public static bool Add(CouponCodeDto dto) { using (var DB = new SSMMEntities()) { DB.CouponCode.Add(new CouponCode() { Code = dto.Code, Des = dto.Des, Amount = dto.Amount, CreateTime = dto.CreateTime, ExpirationTime = dto.ExpirationTime, MaxCount = dto.MaxCount, Status = dto.Status }); return(DB.SaveChanges() > 0); } }
/// <summary> /// 支付宝转账支付 /// </summary> public static bool PayMentForAlipayTransfer(string uid, string pid, string pwd, string pcode, out string info) { info = ""; decimal amount = 0; using (var DB = new SSMMEntities()) { var user = DB.User.SingleOrDefault(x => x.Email == uid); var product = DB.Product.Find(pid); if (product == null) { info = "该产品不存在!请重新支付!"; return(false); } amount = product.Price; //优惠码 var couponcode = new CouponCodeDto(); if (CouponCodeService.Query(pcode, out couponcode)) { amount = product.Price - couponcode.Amount; amount = amount < 0 ? 0 : amount; } else { if (!string.IsNullOrEmpty(pcode)) { info = "优惠码已过期或已超过最大使用次数!请重新支付!"; return(false); } } var tradeno = FormatHelper.GenerateOutTradeNo(); //生成订单 DB.Order.Add(new Order() { TradeNumber = tradeno, ProductId = product.Id, ProductName = product.Name, Price = product.Price, Amount = amount, CreateTime = DateTime.Now, Status = 1, Type = PaymentType.支付宝转账.ToString(), UserId = user.Id }); //ss信息 var ss = DB.SS.SingleOrDefault(x => x.userid == user.Id); if (ss == null) { DB.SS.Add(new SS() { id = tradeno, t = FormatHelper.ConvertDateTimeInt(DateTime.Now), //ss服务端更新时间 u = 0, //上传流量 d = 0, //下载流量 transfer_enable = FormatHelper.GB2B(product.Traffic), //long 总套餐流量 port = SSService.GetNextPort(), //端口 password = pwd, //密码 @switch = 1, enable = 1, isrest = product.IsRest, //是否重置流量 last_rest_time = FormatHelper.ConvertDateTimeInt(DateTime.Now.AddDays(30)), //重置流量时间 expiration_time = FormatHelper.ConvertDateTimeInt(DateTime.Now.AddDays(product.ExpirationDay)), //过期时间 create_time = FormatHelper.ConvertDateTimeInt(DateTime.Now), userid = user.Id }); } else { ss.t = FormatHelper.ConvertDateTimeInt(DateTime.Now); //ss服务端更新时间 ss.u = 0; //上传流量 ss.d = 0; //下载流量 ss.transfer_enable = FormatHelper.GB2B(product.Traffic); //long 总套餐流量 ss.password = pwd; //密码 ss.@switch = 1; ss.enable = 1; ss.isrest = product.IsRest; //是否重置流量 ss.last_rest_time = FormatHelper.ConvertDateTimeInt(DateTime.Now.AddDays(30)); //重置流量时间 ss.expiration_time = FormatHelper.ConvertDateTimeInt(DateTime.Now.AddDays(product.ExpirationDay)); //过期时间 ss.create_time = FormatHelper.ConvertDateTimeInt(DateTime.Now); } //返佣 if (user.ParentId.HasValue) { var parent = DB.User.Find(user.ParentId.Value); if (parent != null) { var num = Convert.ToInt32(SettingCache.Cache.Get(SettingFlag.RebateNum)) * 0.01; var agentamounts = amount * (decimal)num;//返佣金额为最终优惠后的实际交易价格的返佣百分比 parent.Balance += agentamounts; DB.Record.Add(new Record() { Amount = agentamounts, CreateTime = DateTime.Now, Type = RecordType.返佣.ToString(), Info = $"用户[{user.Id}]{user.Email}购买了{product.Name},产品价格{product.Price.ToString("0.00")}元,最终交易价格{amount.ToString("0.00")}元,返佣百分比{num * 100}%,返佣金额{agentamounts.ToString("0.00")}元", UserId = parent.Id, Remark = PaymentType.支付宝转账.ToString() }); } } if (DB.SaveChanges() > 0) { info = "支付成功!"; return(true); } else { info = "发现错误!支付失败!"; return(false); } } }
/// <summary> /// 校验参数签名,返回最终订单金额 /// </summary> public static bool CheckParameterSign(string uid, string pid, string pwd, string pcode, int timestamp, string sign, PaymentType type, out string info, out decimal amount) { info = ""; amount = 0; //校验参数 var ServerSign = ParameterSign(uid, pid, pwd, pcode, timestamp); if (sign != ServerSign) { info = "签名错误!请重新支付!"; return(false); } var time = FormatHelper.GetTime(timestamp); if ((DateTime.Now - time).TotalMinutes > 30) { info = "支付已过期!请重新支付!"; return(false); } using (var DB = new SSMMEntities()) { var user = DB.User.SingleOrDefault(x => x.Email == uid); if (user == null) { info = "该用户不存在!请重新支付!"; return(false); } var product = DB.Product.Find(pid); if (product == null) { info = "该产品不存在!请重新支付!"; return(false); } amount = product.Price; //优惠码 var couponcode = new CouponCodeDto(); if (CouponCodeService.Query(pcode, out couponcode)) { amount = product.Price - couponcode.Amount; amount = amount < 0 ? 0 : amount; } else { if (!string.IsNullOrEmpty(pcode)) { info = "优惠码已过期或已超过最大使用次数!请重新支付!"; return(false); } } //支付方式为 支付宝转账 优惠后的价格为0 if (type == PaymentType.支付宝转账) { if (amount == 0) { info = "支付成功!"; return(true); } } //支付方式为 账户余额支付 需要校验余额 if (type == PaymentType.账户余额) { if (user.Balance < amount) { info = "账户余额不足!"; return(false); } } return(true); } }