MeiRiYiCheng_1_old/YBDevice.NApi.Application/BusinessClient/AccountInfo/BusinessService.cs

149 lines
5.8 KiB
C#

using Furion;
using Furion.DataEncryption;
using Furion.DependencyInjection;
using Nirvana.Common;
using Nirvana.Common.ApiBase;
using Senparc.Weixin.WxOpen.Containers;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using YBDevice.Entity;
namespace YBDevice.NApi.Application.BusinessClient.AccountInfo
{
/// <summary>
/// 商户管理
/// </summary>
public class BusinessService : BaseApiInfoService, IBusinessService, ITransient
{
private readonly ISqlSugarRepository<YB_Business> repository;
private readonly SqlSugarClient dbClient;
public BusinessService(ISqlSugarRepository<YB_Business> sqlSugarRepository)
{
repository = sqlSugarRepository;
dbClient = repository.Context;
}
/// <summary>
/// 修改昵称
/// </summary>
/// <returns></returns>
public async Task<ResultInfo> ChangeNickName(string name)
{
await dbClient.Updateable<YB_Business>().SetColumns(x => new YB_Business
{
Name = name
}).Where(x => x.Id == CurrentBusinessId).ExecuteCommandAsync();
await dbClient.Updateable<YB_Account>().SetColumns(x => new YB_Account
{
RealName = name
}).Where(x => x.Id == CurrentUserId).ExecuteCommandAsync();
return new ResultInfo(ResultState.SUCCESS, "昵称修改成功");
}
/// <summary>
/// 修改密码
/// </summary>
/// <param name="businessChangePwdDto"></param>
/// <returns></returns>
public async Task<ResultInfo> ChangePwd(BusinessChangePwdDto businessChangePwdDto)
{
if (businessChangePwdDto.isvrcode)
{
if (string.IsNullOrEmpty(businessChangePwdDto.code))
{
return new ResultInfo(ResultState.FAIL, "验证码不可为空");
}
//检查验证码
var yzm = RedisHelpers.stringGet<string>($"ybdeviceclient_yam_{businessChangePwdDto.Phone}");
if (businessChangePwdDto.code != yzm)
{
return new ResultInfo() { code = ResultState.FAIL, message = "验证码错误" };
}
}
//检查两次密码是否一致
if (businessChangePwdDto.Password != businessChangePwdDto.RePassword)
{
return new ResultInfo(ResultState.FAIL, "两次密码不一致");
}
var user = await dbClient.Queryable<YB_Account>().FirstAsync(x => x.Phone == businessChangePwdDto.Phone);
if(user == null)
{
return new ResultInfo(ResultState.FAIL, "此手机号还未注册");
}
string pwd = Md5.md5(DESEncrypt.Encrypt(Md5.md5(businessChangePwdDto.Password, 32).ToLower(), user.Secret).ToLower(), 32).ToLower();
await dbClient.Updateable<YB_Account>().SetColumns(x => new YB_Account
{
Password = pwd
}).Where(x => x.Id == user.Id).ExecuteCommandAsync();
return new ResultInfo(ResultState.SUCCESS, "密码修改成功");
}
/// <summary>
/// 检查用户
/// </summary>
/// <param name="userid"></param>
/// <returns></returns>
public async Task<bool> CheckUserAsync(int userid)
{
var account = await dbClient.Queryable<YB_Account>().FirstAsync(x => x.Id == userid);
if(account == null || account.Status == (int)StatusType.Disabled)
{
return false;
}
return true;
}
/// <summary>
/// 获取用户资料
/// </summary>
/// <returns></returns>
public async Task<ResultInfo> GetUserInfoAsync()
{
var account = await dbClient.Queryable<YB_Account>().FirstAsync(x => x.Id == CurrentUserId);
var businessdata = await dbClient.Queryable<YB_BusinessRealData>().FirstAsync(x => x.BusinessId == CurrentBusinessId);
return new ResultInfo(ResultState.SUCCESS, "success", new BusinessInfoDto
{
HeadImgUrl = account.HeadImg.ToStr(),
NickName = account.RealName,
Phone = account.Phone,
DevCnt = businessdata !=null?businessdata.DevCount:0,
TodayCnt = businessdata !=null?businessdata.TodayResultCnt:0,
UserCnt = 0
});
}
/// <summary>
/// 退出登录
/// </summary>
/// <param name="sessionId"></param>
/// <returns></returns>
public async Task<ResultInfo> OutLogin(string sessionId)
{
var sessionBag = await SessionContainer.GetSessionAsync(sessionId);
if (sessionBag == null)
{
return new ResultInfo(ResultState.FAIL, "sessionId未找到");
}
//清除登录信息
// var token = App.HttpContext.Request.Headers["Authorization"].ToString().Replace("Bearer","").Trim();
await SessionContainer.RemoveFromCacheAsync(sessionBag.OpenId);
await dbClient.Deleteable<YB_BusinessWX>().Where(x => x.OpenId == sessionBag.OpenId).ExecuteCommandAsync();
return new ResultInfo(ResultState.SUCCESS, "退出登录成功");
}
/// <summary>
/// 上传头像
/// </summary>
/// <returns></returns>
public async Task<ResultInfo> UploadImgAsync(string headimg)
{
await dbClient.Updateable<YB_Account>().SetColumns(x => new YB_Account
{
HeadImg = headimg
}).Where(x => x.Id == CurrentUserId).ExecuteCommandAsync();
return new ResultInfo(ResultState.SUCCESS, "头像更新成功");
}
}
}