Mini.Crm/Mini.Services/Bas/BasInnerUserService.cs

149 lines
5.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Air.Model;
using Air.Model.AirAdminViewModel;
using Mini.Common;
using Mini.Model;
using Mini.Model.Entity;
namespace Mini.Services.Bas
{
public class BasInnerUserService : IBasInnerUserService
{
private readonly IAdminRepository<Bas_InnerUser> _basInnerUserRepository;
private readonly IAdminRepository<Bas_InnerUserSalt> _basInnerUserSaltRepository;
public BasInnerUserService(IAdminRepository<Bas_InnerUser> basInnerUserRepository, IAdminRepository<Bas_InnerUserSalt> basInnerUserSaltRepository)
{
this._basInnerUserRepository = basInnerUserRepository;
this._basInnerUserSaltRepository = basInnerUserSaltRepository;
}
public int AddBasInnerUser(Bas_InnerUser basInnerUser)
{
if (basInnerUser == null)
throw new ArgumentNullException();
return _basInnerUserRepository.Add(basInnerUser);
}
public void Delete(Bas_InnerUser model)
{
var info = _basInnerUserRepository.Get(p => p.uid == model.uid);
if (info != null)
_basInnerUserRepository.Delete(info);
}
public Bas_InnerUser GetBasInnerUser(int uId)
{
if (uId == 0)
return null;
return _basInnerUserRepository.Get(p => p.uid == uId);
}
public Bas_InnerUser GetBasInnerUserByEid(int eId)
{
if (eId == 0)
return null;
return _basInnerUserRepository.Get(p => p.eid == eId);
}
public IList<Bas_InnerUserModel> GetList(ref Pager pager, int? eId, string uName, int? isDismiss)
{
var queryData = _basInnerUserRepository.Table;
if (eId.HasValue)
queryData = queryData.Where(p => p.eid == eId.Value);
if (!string.IsNullOrWhiteSpace(uName))
queryData = queryData.Where(p => p.uname.Contains(uName));
if (isDismiss.HasValue && isDismiss > -1)
queryData = queryData.Where(p => p.isdismiss == isDismiss.Value);
PagerUtil.SetPager<Bas_InnerUser>(ref queryData, ref pager);
return queryData.Select(p => new Bas_InnerUserModel() { uid = p.uid, uname = p.uname, eid = p.eid, gender = p.gender, isdismiss = p.isdismiss, birthday = p.birthday, passwd = p.passwd, createUser = p.createUser, ctime = p.ctime, updateuser = p.updateuser, utime = p.utime }).ToList();
}
public bool Update(Bas_InnerUserEidtModel model)
{
var info = _basInnerUserRepository.Get(p => p.uid == model.uid);
if(info!= null)
{
info.uid = model.uid;
info.uname = model.uname;
info.birthday = model.birthday;
info.createUser = model.createUser;
info.ctime = model.ctime;
info.eid = model.eid;
info.gender = model.gender;
info.isdismiss = model.isdismiss;
info.updateuser = model.updateuser;
info.utime = model.utime;
if (!string.IsNullOrEmpty(model.passwd))
{
var user_salt = _basInnerUserSaltRepository.Get(p => p.Eid == model.eid).PwdSalt;
info.passwd = Utility.Sha512(model.passwd + user_salt);
}
}
return _basInnerUserRepository.Update(info);
}
public bool UpdatePwd(BasUpdatePwd model,ref ValidationErrors errors)
{
bool result = false;
try
{
var info = _basInnerUserRepository.Get(p => p.uid == model.uid);
if (info == null)
{
errors.Add("找不到数据!");
return false;
}
var usersalt = _basInnerUserSaltRepository.Get(p => p.Eid == info.eid);
if (null == usersalt)
{
errors.Add("找不到数据!");
return false;
}
var user_salt = usersalt.PwdSalt;
string sha_password = Utility.Sha512(model.rpassword + user_salt);
info.passwd = sha_password;
_basInnerUserRepository.Update(info);
result = true;
}
catch (Exception ex) {
errors.Add("系统错误!");
LogHelper.Error(ex.ToString());
}
return result;
}
public bool ValidateUser(int Eid, string password, out string errorMessage, out int UserId)
{
errorMessage = string.Empty;
var user = _basInnerUserRepository.Get(p => p.eid == Eid && p.isdismiss == 0);
UserId = 0;
if (null == user)
{
errorMessage = "用户名或密码错误!";
return false;
}
else
{
UserId = user.uid;
}
var usersalt = _basInnerUserSaltRepository.Get(p => p.Eid == Eid);
if (null == usersalt)
{
errorMessage = "用户名或密码错误!";
return false;
}
var user_salt = usersalt.PwdSalt;
string sha_password = Utility.Sha512(password + user_salt);
if (user.passwd != sha_password)
{
errorMessage = "用户名或密码错误!";
return false;
}
return true;
}
}
}