NewGaoKaoApi/New_College.Services/V_VipCardInfoServices.cs

468 lines
20 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;
private readonly ID_UserSettingBaseServices d_UserSettingBase;
public V_VipCardInfoServices(IBaseRepository<V_VipCardInfo> dal
, IV_OrderInfoRepository IV_OrderInfoRepository
, IV_VipCardTypeRepository IV_VipCardTypeRepository
, IV_CustomerInfoRepository IV_CustomerInfoRepository,
ID_UserSettingBaseServices d_UserSettingBase)
{
this._dal = dal;
v_OrderInfoRepository = IV_OrderInfoRepository;
v_VipCardTypeRepository = IV_VipCardTypeRepository;
v_CustomerInfoRepository = IV_CustomerInfoRepository;
base.BaseDal = dal;
this.d_UserSettingBase = d_UserSettingBase;
}
/// <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 && x.Pwd == query.CardPwd)).FirstOrDefault();
if (cardinfo == null || cardinfo != null && cardinfo.IsBind == 1)
return new MessageModel<bool>() { success = false, msg = "会员卡号有误或已被绑定" };
cardinfo.IsBind = 1;
cardinfo.ModifyTime = DateTime.Now;
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)
{
var isverfiy = await d_UserSettingBase.Query(c => c.CustomerId == query.CustomerId);
if (!isverfiy.Any())
{
await d_UserSettingBase.SyncBaseInfo(new UserSettingBaseRequest() { CustomerId = query.CustomerId });
}
return new MessageModel<bool>() { success = true, msg = "绑定成功", response = true };
}
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>> OpenBindCardInfo(OpenVipCardRequest query)
{
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<bool>() { success = false, msg = "会员卡号有误或已被绑定" };
cardinfo.IsBind = 1;
cardinfo.ModifyTime = DateTime.Now;
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,
TenantId = query.TenantId,
// 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
});
return new MessageModel<bool>()
{
msg = "ok",
response = true,
success = true,
};
}
///// <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,
Pwd = x.Substring(x.Length - 4, 4),
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 };
}
}
}
}