using New_College.IServices; using New_College.Model.Models; using New_College.Services.BASE; using New_College.IRepository.Base; using New_College.Model; using System.Threading.Tasks; using New_College.Model.ViewModels; using New_College.IRepository; using System.Linq; using System; using LinqKit; using System.Collections.Generic; using New_College.Common; using New_College.Model.ViewModels.Query; namespace New_College.Services { public class V_VipCardInfoServices : BaseServices, IV_VipCardInfoServices { private readonly IBaseRepository _dal; private readonly IV_VipCardTypeRepository v_VipCardTypeRepository; private readonly IV_OrderInfoRepository v_OrderInfoRepository; private readonly IV_CustomerInfoRepository v_CustomerInfoRepository; public V_VipCardInfoServices(IBaseRepository dal , IV_OrderInfoRepository IV_OrderInfoRepository , IV_VipCardTypeRepository IV_VipCardTypeRepository , IV_CustomerInfoRepository IV_CustomerInfoRepository) { this._dal = dal; v_OrderInfoRepository = IV_OrderInfoRepository; v_VipCardTypeRepository = IV_VipCardTypeRepository; v_CustomerInfoRepository = IV_CustomerInfoRepository; base.BaseDal = dal; } /// /// 绑定卡 /// /// /// public async Task> BindCardInfo(VipCardQuery query) { var info = await v_CustomerInfoRepository.QueryById(query.CustomerId); if (info == null) return new MessageModel() { success = false, msg = "用户信息异常,你重新登录" }; var cardinfo = (await _dal.Query(x => x.IsDelete == false && x.Code == query.CardCode && x.Pwd == query.CardPwd)).FirstOrDefault(); if (cardinfo == null || cardinfo != null && cardinfo.IsBind == 1) return new MessageModel() { success = false, msg = "会员卡号有误或已被绑定" }; cardinfo.IsBind = 1; cardinfo.EndTime = DateTime.Now.AddDays(cardinfo.Day); var result = await _dal.Update(cardinfo); if (result == false) return new MessageModel() { success = false, msg = "绑定失败" }; var baseResult = await v_OrderInfoRepository.Add(new V_OrderInfo { out_trade_no = query.CustomerId + query.CardCode, // PayType = 2, CardTypeId = cardinfo.CardTypeId, Status = EnumOrderType.payoff, CustomerId = query.CustomerId, Price = cardinfo.Money, PayPrice = cardinfo.Money, Name = "六纬志愿VIP绑定", CardNo = query.CardCode, CardId = cardinfo.Id }); if (baseResult > 0) { //更改用户信息 info.IsVIP = true; info.VipCode = query.CardCode; var updateresult = await v_CustomerInfoRepository.Update(info); if (updateresult) { return new MessageModel() { success = true, msg = "绑定成功", response = true }; } else { return new MessageModel() { success = false, msg = "用户信息更新失败" }; } } else { return new MessageModel() { success = false, msg = "绑定失败" }; } } ///// ///// 绑定卡 添加卡 ///// ///// ///// //public async Task> BindCardInfo(VipCardQuery query) //{ // var cardinfo = (await _dal.Query(x => x.IsDelete == false && x.IsBind == 0 && x.Code == query.CardCode)).FirstOrDefault(); // if (cardinfo == null) // return new MessageModel() { success = false, msg = "会员卡号有误或已被绑定" }; // var endtime = DateTime.Now.AddDays(cardinfo.Day); // var oldorderinfo = await v_OrderInfoRepository.Query(x => x.CustomerId == query.CustomerId && x.IsDelete == false); // if (oldorderinfo.Count > 0) // { // var card = oldorderinfo.OrderByDescending(x => x.CreateTime).FirstOrDefault(); // var oldcardinfo = await _dal.Query(x => x.Id == card.CardId && x.EndTime >= DateTime.Now); // if (oldcardinfo != null) // { // var oldendtime = oldcardinfo.OrderByDescending(x => x.CreateTime).Select(x => x.EndTime).FirstOrDefault(); // endtime = oldendtime.Value.AddDays(cardinfo.Day); // } // } // //重新绑定的话 获取之前的到期时间再加上卡的日期 // var addcard = await _dal.Add(new V_VipCardInfo() // { // CardTypeId = cardinfo.CardTypeId, // CardTypeName = cardinfo.CardTypeName, // Code = query.CardCode, // IsBind = 1, // Money = cardinfo.Money, // Day = cardinfo.Day, // EndTime = endtime // }); // if (addcard <= 0) // return new MessageModel() { success = false, msg = "绑定失败" }; // var baseResult = await v_OrderInfoRepository.Add(new V_OrderInfo // { // out_trade_no = query.CustomerId + query.CardCode, // // PayType = 2, // CardTypeId = cardinfo.CardTypeId, // //Status = 1, // CustomerId = query.CustomerId, // Price = cardinfo.Money, // PayPrice = cardinfo.Money, // Name = "壹志愿好帮手VIP绑定", // CardNo = query.CardCode, // CardId = addcard // }); // if (baseResult > 0) // { // return new MessageModel() { success = true, msg = "绑定成功" }; // } // else // { // return new MessageModel() { success = false, msg = "绑定失败" }; // } //} /// /// 获取vip信息 /// /// /// public async Task> GetVipInfo(IdQuery query) { var orderinfo = await v_OrderInfoRepository.Query(x => x.CustomerId == query.Id && x.IsDelete == false); if (orderinfo.Count <= 0) return new MessageModel() { success = false, msg = "您还不是Vip" }; var card = orderinfo.OrderByDescending(x => x.CreateTime).FirstOrDefault(); var cardinfo = await _dal.QueryById(card.CardId); if (card.CardNo == cardinfo.Code && DateTime.Now < cardinfo.EndTime) { return new MessageModel() { success = true, msg = "获取成功", response = new VipInfoResult() { IsVip = true, VipCode = cardinfo.Code, VipEndTime = cardinfo.EndTime, VipCardTypeId = cardinfo.CardTypeId, VipCardTypeName = cardinfo.CardTypeName } }; } else { return new MessageModel() { success = false, msg = "卡号信息异常,或会员卡已过期", response = new VipInfoResult() { IsVip = false, VipCode = cardinfo.Code, VipEndTime = cardinfo.EndTime } }; } } /// /// 生成卡信息 /// /// /// public async Task>> AutoVipCardInfo(AutoVipInfoQuery query) { var typeinfo = await v_VipCardTypeRepository.QueryById(query.VipCardTypeId); if (typeinfo == null) return new MessageModel>() { success = false, msg = "卡类型错误" }; var cardinfo = (await _dal.QuerySql("SELECT Code FROM `V_VipCardInfo` where IsDelete=0")).Select(x => x.Code).ToList(); List cardNumbers = new List(); for (int i = 0; i < query.Num; i++) { var cn = GenerateCardNumberHelper.GenerateCardNumber(query.Head, query.Length); cardNumbers.Add(cn); } cardinfo.AddRange(cardNumbers); var isUnique = cardinfo.GroupBy(x => x).All(g => g.Count() == 1); //Assert.IsTrue(isUnique); if (isUnique) { List addinfo = cardNumbers.Select(x => new V_VipCardInfo() { CardTypeId = typeinfo.Id, CardTypeName = typeinfo.Name, Code = x, Day = typeinfo.Day, EndTime = DateTime.Now.AddDays(typeinfo.Day), IsBind = 0, Money = typeinfo.Money }).ToList(); var result = await _dal.Add(addinfo); return new MessageModel>() { success = true, msg = "生成成功", response = cardNumbers }; } return new MessageModel>() { success = false, msg = "生成失败", response = cardNumbers }; } #region 生成卡号 #endregion /// /// 获取学生卡信息(分页) vip卡 /// /// /// public async Task>> GetVipCardInfoByPage(VipCardInfoSearchQuery query) { var wheres = PredicateBuilder.New(); wheres = wheres.And(x => x.IsDelete == false); if (!string.IsNullOrWhiteSpace(query.IsBind) && query.IsBind != "2") wheres = wheres.And(x => x.IsBind == Convert.ToInt32(query.IsBind)); if (!string.IsNullOrWhiteSpace(query.Code)) wheres = wheres.And(x => x.Code.Contains(query.Code)); if (!string.IsNullOrWhiteSpace(query.CardTypeId) && query.CardTypeId != "0") wheres = wheres.And(x => x.CardTypeId == Convert.ToInt32(query.CardTypeId)); var info = await _dal.QueryPage(wheres, query.PageIndex, query.PageSize); if (info.data.Count <= 0) return new MessageModel>() { success = false, msg = "获取失败" }; //var regioninfo = await sysRegionRepository.Query(x => x.ParentCode == "100000"); PageModel pageModel = new PageModel() { }; List list = new List() { }; foreach (var item in info.data) { list.Add(new VipCardInfoResult() { Id = item.Id, Code = item.Code, CardTypeName = item.CardTypeName, IsBind = item.IsBind, IsBindName = item.IsBind == 0 ? "绑定" : "未绑定", Day = item.Day, Money = item.Money }); } pageModel.data = list; pageModel.dataCount = info.dataCount; pageModel.page = info.page; pageModel.pageCount = info.pageCount; pageModel.PageSize = info.PageSize; return new MessageModel>() { success = true, msg = "获取成功", response = pageModel }; } /// /// 获取单个学生卡信息 /// /// /// public async Task> GetVipCardInfoOne(IdQuery query) { var info = await _dal.QueryById(query.Id); if (info == null) return new MessageModel() { success = false, msg = "获取失败" }; return new MessageModel() { success = true, msg = "获取成功", response = new VipCardInfoResultOne() { Id = info.Id, Code = info.Code, CardTypeId = info.CardTypeId, CardTypeName = info.CardTypeName, IsBind = info.IsBind, Day = info.Day, Money = info.Money } }; } /// /// 添加学生卡 /// /// /// public async Task> AddVipCardInfo(VipCardInfoQuery query) { //首先获取选择对应的CardType信息 var wheres = PredicateBuilder.New(); wheres = wheres.And(x => x.IsDelete == false); if (query.CardTypeId > 0) wheres = wheres.And(x => x.Id == query.CardTypeId); var info = await v_VipCardTypeRepository.Query(wheres); var CardTypeList = info.Select(x => x.Id).ToList(); var listCard = await v_VipCardTypeRepository.Query(x => query.CardTypeId == x.Id && x.IsDelete == false); var CardTypeOne = listCard.Where(x => x.Id == query.CardTypeId).FirstOrDefault(); var result = await _dal.Add(new V_VipCardInfo() { Code = query.Code, Day = CardTypeOne.Day, Money = CardTypeOne.Money, CardTypeId = CardTypeOne.Id, CardTypeName = CardTypeOne.Name, }); if (result > 0) { return new MessageModel() { success = true, msg = "添加成功", response = true }; } else { return new MessageModel() { success = false, msg = "添加失败", response = false }; } } /// /// 更新学生卡 /// /// /// public async Task> UpdateVipCardInfo(VipCardInfoQuery query) { //首先获取选择对应的CardType信息 var wheres = PredicateBuilder.New(); wheres = wheres.And(x => x.IsDelete == false); if (query.CardTypeId > 0) wheres = wheres.And(x => x.Id == query.CardTypeId); var info = await v_VipCardTypeRepository.Query(wheres); var CardTypeList = info.Select(x => x.Id).ToList(); var listCard = await v_VipCardTypeRepository.Query(x => query.CardTypeId == x.Id && x.IsDelete == false); var CardTypeOne = listCard.Where(x => x.Id == query.CardTypeId).FirstOrDefault(); var infoCard = await _dal.QueryById(query.Id); if (infoCard == null) return new MessageModel() { success = false, msg = "修改内容不存在", response = false }; infoCard.Code = query.Code; //infoCard.IsBind = query.IsBind; infoCard.Day = CardTypeOne.Day; infoCard.Money = CardTypeOne.Money; infoCard.CardTypeId = CardTypeOne.Id; infoCard.CardTypeName = CardTypeOne.Name; var result = await _dal.Update(infoCard); if (result) { return new MessageModel() { success = true, msg = "修改成功", response = true }; } else { return new MessageModel() { success = false, msg = "修改失败", response = false }; } } /// /// 删除学生卡 /// /// /// public async Task> DeleteVipCardInfo(IdQuery query) { if (query.Ids == null || query.Ids.Count <= 0) return new MessageModel() { success = false, msg = "传入为空", response = false }; var info = await _dal.Query(x => x.IsDelete == false && query.Ids.Contains(x.Id)); if (info.Count <= 0) return new MessageModel() { success = false, msg = "没有可被删除项", response = false }; foreach (var item in info) { item.IsDelete = true; } var result = await _dal.Update(info); if (result) { return new MessageModel() { success = true, msg = "删除成功", response = true }; } else { return new MessageModel() { success = false, msg = "删除失败", response = false }; } } } }