419 lines
18 KiB
C#
419 lines
18 KiB
C#
|
|
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<V_VipCardInfo>, IV_VipCardInfoServices
|
|
{
|
|
private readonly IBaseRepository<V_VipCardInfo> _dal;
|
|
private readonly IV_VipCardTypeRepository v_VipCardTypeRepository;
|
|
private readonly IV_OrderInfoRepository v_OrderInfoRepository;
|
|
private readonly IV_CustomerInfoRepository v_CustomerInfoRepository;
|
|
|
|
public V_VipCardInfoServices(IBaseRepository<V_VipCardInfo> 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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 绑定卡
|
|
/// </summary>
|
|
/// <param name="query"></param>
|
|
/// <returns></returns>
|
|
public async Task<MessageModel<bool>> BindCardInfo(VipCardQuery query)
|
|
{
|
|
var info = await v_CustomerInfoRepository.QueryById(query.CustomerId);
|
|
if (info == null)
|
|
return new MessageModel<bool>() { success = false, msg = "用户信息异常,你重新登录" };
|
|
var cardinfo = (await _dal.Query(x => x.IsDelete == false && x.Code == query.CardCode)).FirstOrDefault();
|
|
if (cardinfo == null || cardinfo != null && cardinfo.IsBind == 1)
|
|
return new MessageModel<bool>() { 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<bool>() { 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<bool>() { success = true, msg = "绑定成功" };
|
|
}
|
|
else
|
|
{
|
|
return new MessageModel<bool>() { success = false, msg = "用户信息更新失败" };
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return new MessageModel<bool>() { success = false, msg = "绑定失败" };
|
|
}
|
|
}
|
|
|
|
///// <summary>
|
|
///// 绑定卡 添加卡
|
|
///// </summary>
|
|
///// <param name="query"></param>
|
|
///// <returns></returns>
|
|
//public async Task<MessageModel<bool>> 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<bool>() { 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<bool>() { 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<bool>() { success = true, msg = "绑定成功" };
|
|
// }
|
|
// else
|
|
// {
|
|
// return new MessageModel<bool>() { success = false, msg = "绑定失败" };
|
|
// }
|
|
//}
|
|
|
|
|
|
/// <summary>
|
|
/// 获取vip信息
|
|
/// </summary>
|
|
/// <param name="query"></param>
|
|
/// <returns></returns>
|
|
public async Task<MessageModel<VipInfoResult>> GetVipInfo(IdQuery query)
|
|
{
|
|
var orderinfo = await v_OrderInfoRepository.Query(x => x.CustomerId == query.Id && x.IsDelete == false);
|
|
if (orderinfo.Count <= 0)
|
|
return new MessageModel<VipInfoResult>() { 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<VipInfoResult>()
|
|
{
|
|
success = true,
|
|
msg = "获取成功",
|
|
response = new VipInfoResult()
|
|
{
|
|
IsVip = true,
|
|
VipCode = cardinfo.Code,
|
|
VipEndTime = cardinfo.EndTime,
|
|
VipCardTypeId = cardinfo.CardTypeId,
|
|
VipCardTypeName = cardinfo.CardTypeName
|
|
}
|
|
};
|
|
}
|
|
else
|
|
{
|
|
return new MessageModel<VipInfoResult>()
|
|
{
|
|
success = false,
|
|
msg = "卡号信息异常,或会员卡已过期",
|
|
response = new VipInfoResult()
|
|
{
|
|
IsVip = false,
|
|
VipCode = cardinfo.Code,
|
|
VipEndTime = cardinfo.EndTime
|
|
}
|
|
};
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 生成卡信息
|
|
/// </summary>
|
|
/// <param name="query"></param>
|
|
/// <returns></returns>
|
|
public async Task<MessageModel<List<string>>> AutoVipCardInfo(AutoVipInfoQuery query)
|
|
{
|
|
var typeinfo = await v_VipCardTypeRepository.QueryById(query.VipCardTypeId);
|
|
if (typeinfo == null)
|
|
return new MessageModel<List<string>>() { success = false, msg = "卡类型错误" };
|
|
var cardinfo = (await _dal.QuerySql("SELECT Code FROM `V_VipCardInfo` where IsDelete=0")).Select(x => x.Code).ToList();
|
|
List<string> cardNumbers = new List<string>();
|
|
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<V_VipCardInfo> 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<List<string>>() { success = true, msg = "生成成功", response = cardNumbers };
|
|
}
|
|
return new MessageModel<List<string>>() { success = false, msg = "生成失败", response = cardNumbers };
|
|
}
|
|
|
|
#region 生成卡号
|
|
|
|
#endregion
|
|
|
|
|
|
/// <summary>
|
|
/// 获取学生卡信息(分页) vip卡
|
|
/// </summary>
|
|
/// <param name="query"></param>
|
|
/// <returns></returns>
|
|
public async Task<MessageModel<PageModel<VipCardInfoResult>>> GetVipCardInfoByPage(VipCardInfoSearchQuery query)
|
|
{
|
|
var wheres = PredicateBuilder.New<V_VipCardInfo>();
|
|
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<PageModel<VipCardInfoResult>>()
|
|
{
|
|
success = false,
|
|
msg = "获取失败"
|
|
};
|
|
//var regioninfo = await sysRegionRepository.Query(x => x.ParentCode == "100000");
|
|
PageModel<VipCardInfoResult> pageModel = new PageModel<VipCardInfoResult>() { };
|
|
List<VipCardInfoResult> list = new List<VipCardInfoResult>() { };
|
|
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<PageModel<VipCardInfoResult>>()
|
|
{
|
|
success = true,
|
|
msg = "获取成功",
|
|
response = pageModel
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取单个学生卡信息
|
|
/// </summary>
|
|
/// <param name="query"></param>
|
|
/// <returns></returns>
|
|
public async Task<MessageModel<VipCardInfoResultOne>> GetVipCardInfoOne(IdQuery query)
|
|
{
|
|
var info = await _dal.QueryById(query.Id);
|
|
if (info == null)
|
|
return new MessageModel<VipCardInfoResultOne>() { success = false, msg = "获取失败" };
|
|
|
|
return new MessageModel<VipCardInfoResultOne>()
|
|
{
|
|
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
|
|
}
|
|
};
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 添加学生卡
|
|
/// </summary>
|
|
/// <param name="query"></param>
|
|
/// <returns></returns>
|
|
public async Task<MessageModel<bool>> AddVipCardInfo(VipCardInfoQuery query)
|
|
{
|
|
//首先获取选择对应的CardType信息
|
|
var wheres = PredicateBuilder.New<V_VipCardType>();
|
|
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<bool>() { success = true, msg = "添加成功", response = true };
|
|
}
|
|
else
|
|
{
|
|
return new MessageModel<bool>() { success = false, msg = "添加失败", response = false };
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 更新学生卡
|
|
/// </summary>
|
|
/// <param name="query"></param>
|
|
/// <returns></returns>
|
|
public async Task<MessageModel<bool>> UpdateVipCardInfo(VipCardInfoQuery query)
|
|
{
|
|
//首先获取选择对应的CardType信息
|
|
var wheres = PredicateBuilder.New<V_VipCardType>();
|
|
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<bool>() { 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<bool>() { success = true, msg = "修改成功", response = true };
|
|
}
|
|
else
|
|
{
|
|
return new MessageModel<bool>() { success = false, msg = "修改失败", response = false };
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 删除学生卡
|
|
/// </summary>
|
|
/// <param name="query"></param>
|
|
/// <returns></returns>
|
|
public async Task<MessageModel<bool>> DeleteVipCardInfo(IdQuery query)
|
|
{
|
|
if (query.Ids == null || query.Ids.Count <= 0)
|
|
return new MessageModel<bool>() { 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<bool>() { success = false, msg = "没有可被删除项", response = false };
|
|
foreach (var item in info)
|
|
{
|
|
item.IsDelete = true;
|
|
}
|
|
var result = await _dal.Update(info);
|
|
if (result)
|
|
{
|
|
return new MessageModel<bool>() { success = true, msg = "删除成功", response = true };
|
|
}
|
|
else
|
|
{
|
|
return new MessageModel<bool>() { success = false, msg = "删除失败", response = false };
|
|
}
|
|
}
|
|
}
|
|
} |