tuiwucarrer/Admin.NET/Admin.NET.Application/Service/SysWeChatUserExtend/ZYVipService.cs

121 lines
4.1 KiB
C#

using Microsoft.Extensions.Caching.Distributed;
using Newtonsoft.Json.Serialization;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Admin.NET.Core.Service;
using Flurl.Http;
namespace Admin.NET.Application.Service;
/// <summary>
/// vip卡服务
/// </summary>
[ApiDescriptionSettings(ApplicationConst.ZYGroupName, Order = 900)]
[Route("api/Zyvip")]
public class ZYVipService : IDynamicApiController, ITransient
{
private readonly UserManager _userManager;
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly SqlSugarRepository<BusVipCardInfo> _vipCardInfo;
private readonly SqlSugarRepository<SysDictData> _dictdata;
/// <summary>
///
/// </summary>
private readonly SqlSugarRepository<SysWeChatUserExtend> _wechatUserExtend;
public ZYVipService(UserManager userManager, IHttpContextAccessor httpContextAccessor, SqlSugarRepository<SysWeChatUserExtend> wechatUserExtend, SqlSugarRepository<BusVipCardInfo> vipCardInfo, SqlSugarRepository<SysDictData> dictdata)
{
_userManager = userManager;
_httpContextAccessor = httpContextAccessor;
_wechatUserExtend = wechatUserExtend;
_vipCardInfo = vipCardInfo;
_dictdata = dictdata;
}
/// <summary>
/// 绑定vip
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost]
public async Task<bool> Bind([FromBody] VipBindInput dto)
{
try
{
if (string.IsNullOrWhiteSpace(dto.CardPwd) || string.IsNullOrWhiteSpace(dto.CardCode))
{
throw Oops.Oh("必填信息为空");
}
var cardinfo = await _vipCardInfo.AsQueryable().FirstAsync(e => e.Code == dto.CardCode && e.Pwd == dto.CardPwd);
if (cardinfo == null)
throw Oops.Oh("卡号或密码错误");
if (cardinfo.IsBind == 1)
throw Oops.Oh("卡号已被绑定");
//更新用户拓展信息表状态
if (cardinfo != null)
{
var single = await _wechatUserExtend.GetSingleAsync(e => e.WxId == _userManager.UserId);
single.VipCode = dto.CardCode;
single.IsVIP = true;
single.UpdateTime = DateTime.Now;
single.UpdateUserId = _userManager.UserId;
cardinfo.IsBind = 1;
cardinfo.UpdateTime = DateTime.Now;
cardinfo.UpdateUserId = _userManager.UserId;
cardinfo.UpdateUserName = _userManager.RealName;
await _vipCardInfo.UpdateAsync(cardinfo);
return await _wechatUserExtend.UpdateAsync(single);
}
else
{
throw Oops.Oh("卡号或密码错误");
}
}
catch (Exception ex)
{
throw Oops.Oh("卡号或密码错误");
}
}
/// <summary>
/// 获取用户VIP绑定信息
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<UserVipBindDto> GetBingInfo()
{
var userbindinfo = new UserVipBindDto();
//var single = await _wechatUserExtend.GetFirstAsync(e => e.WxId == _userManager.UserId && e.IsVIP == false);
//if (single == null)
//{
// throw Oops.Oh("用户未绑定");
//}
var cardinfo = await _vipCardInfo.GetFirstAsync(e => e.IsBind == 1 && e.UpdateUserId == _userManager.UserId);
if (cardinfo == null)
{
throw Oops.Oh("用户未绑定");
}
var cardtypeinfo = await _dictdata.GetFirstAsync(e => e.Id == cardinfo.CardTypeId);
userbindinfo.CarTypeName = cardtypeinfo.Name;
userbindinfo.CardCode = cardinfo.Code;
userbindinfo.EndTime = cardinfo.EndTime;
userbindinfo.CreateTime = cardinfo.UpdateTime.Value;
userbindinfo.Money = cardinfo.Money;
userbindinfo.Day = (cardinfo.EndTime - cardinfo.CreateTime.Value).Days;
return userbindinfo;
}
}