194 lines
8.2 KiB
C#
194 lines
8.2 KiB
C#
using Appointment.Entity;
|
|
using Appointment.IRepository;
|
|
using Newtonsoft.Json;
|
|
using SqlSugar;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
|
|
namespace Appointment.Repository
|
|
{
|
|
public class UserRepo : DbContext, IUserRepo
|
|
{
|
|
static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(UserRepo));
|
|
|
|
IApptLogRepo _ApptLog;
|
|
IApptRepo _ApptRepo;
|
|
public UserRepo(IApptLogRepo apptLog, IApptRepo apptRepo)
|
|
{
|
|
_ApptLog = apptLog;
|
|
_ApptRepo = apptRepo;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 账号与密码登录
|
|
/// </summary>
|
|
/// <param name="userName">账号</param>
|
|
/// <param name="userPwd">密码</param>
|
|
/// <param name="code">公众号Code</param>
|
|
/// <param name="hotelid">酒店Id</param>
|
|
/// <returns></returns>
|
|
public ApiResult<UserInfoRes> UserNameLogin(string userName, string userPwd, string code, string hotelid)
|
|
{
|
|
var user = Db.Queryable<UcLogin>()
|
|
.Where(t => t.OpId == userName && t.Password == userPwd).First();
|
|
if (user == null) return ApiResult<UserInfoRes>.Failed("登录失败,用户不存在!");
|
|
user = user.Replace();
|
|
if (user.Locked == "T") return ApiResult<UserInfoRes>.Failed("登录失败,账号锁定!");
|
|
|
|
if (!string.IsNullOrWhiteSpace(code))
|
|
{
|
|
ApiResult<WeChatLoginRes> resultOpen = new WechatHelper().Code2Session(code);
|
|
if (!resultOpen.IsSuccess) return ApiResult<UserInfoRes>.Failed(resultOpen.Msg);
|
|
|
|
if (user.WxOpenId != resultOpen.Info.Openid)
|
|
{
|
|
user.WxOpenId = resultOpen.Info.Openid;
|
|
var update = Db.Updateable(user)
|
|
.UpdateColumns(t => new { t.WxOpenId, t.OpId, t.Password })
|
|
.WhereColumns(t => new { t.OpId, t.Password }).ExecuteCommand();
|
|
}
|
|
}
|
|
|
|
var role = Db.Queryable<ApptAuditor>().Where(t => t.OpGroup == user.OpGroup && t.ApptTypeId == 2).Any();
|
|
|
|
int bindStatus = string.IsNullOrWhiteSpace(user.WxServiceId) ? 0 : 1;
|
|
string sJson = JsonConvert.SerializeObject(new LoginUserRes()
|
|
{
|
|
UserAccount = user.OpId,
|
|
UserName = user.OpName,
|
|
UserGroup = user.OpGroup,
|
|
Hotelid = hotelid
|
|
});
|
|
var userToken = CryptoHelper.DES_Encode(sJson);
|
|
|
|
var wxmpAppid = BaseConfig.App(new string[] { "WeChatService", "AppId" });
|
|
|
|
return ApiResult<UserInfoRes>.Success(string.Empty, new UserInfoRes()
|
|
{
|
|
BindStatus = bindStatus,
|
|
UserAccount = user.OpId,
|
|
Token = wxmpAppid,
|
|
Role = role ? 1 : 0,
|
|
AccountDES = userToken
|
|
});
|
|
}
|
|
|
|
public ApiResult<UserInfoRes> WxLogin(string code, string hotelid)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(code)) return ApiResult<UserInfoRes>.Failed("未获取有效的微信信息");
|
|
|
|
ApiResult<WeChatLoginRes> resultOpen = new WechatHelper().Code2Session(code);
|
|
if (!resultOpen.IsSuccess) return ApiResult<UserInfoRes>.Failed(resultOpen.Msg);
|
|
|
|
var user = Db.Queryable<UcLogin>()
|
|
.Where(t => t.WxOpenId == resultOpen.Info.Openid).First();
|
|
if (user == null) return ApiResult<UserInfoRes>.Failed("登录失败,该微信未绑定,可以通过工号登录实现绑定!");
|
|
user = user.Replace();
|
|
if (user.Locked == "T") return ApiResult<UserInfoRes>.Failed("登录失败,账号锁定!");
|
|
|
|
var role = Db.Queryable<ApptAuditor>().Where(t => t.OpGroup == user.OpGroup && t.ApptTypeId == 2).Any();
|
|
|
|
int bindStatus = string.IsNullOrWhiteSpace(user.WxServiceId) ? 0 : 1;
|
|
string sJson = JsonConvert.SerializeObject(new LoginUserRes()
|
|
{
|
|
UserAccount = user.OpId,
|
|
UserName = user.OpName,
|
|
UserGroup = user.OpGroup,
|
|
Hotelid = hotelid
|
|
});
|
|
var userToken = CryptoHelper.DES_Encode(sJson);
|
|
|
|
var wxmpAppid = BaseConfig.App(new string[] { "WeChatService", "AppId" });
|
|
|
|
return ApiResult<UserInfoRes>.Success(string.Empty, new UserInfoRes()
|
|
{
|
|
BindStatus = bindStatus,
|
|
UserAccount = user.OpId,
|
|
Token = wxmpAppid,
|
|
Role = role ? 1 : 0,
|
|
AccountDES = userToken
|
|
});
|
|
}
|
|
|
|
|
|
public ApiResult WxServiceSet(WxServiceSetRes req)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(req.UserAccount)) return ApiResult.Failed("添加失败,未获取到当前用户账号!");
|
|
|
|
var user = Db.Queryable<UcLogin>().Where(t => t.OpId == req.UserAccount && t.Locked == "F").First();
|
|
if (user == null) return ApiResult.Failed("操作失败,用户不存在或被冻结!");
|
|
user = user.Replace();
|
|
|
|
string oldData = JsonConvert.SerializeObject(user);
|
|
|
|
if (string.IsNullOrWhiteSpace(user.WxServiceId))
|
|
{
|
|
string accessTokenMode = BaseConfig.App(new string[] { "AccessTokenMode" });
|
|
if (string.IsNullOrWhiteSpace(accessTokenMode))
|
|
{
|
|
log.Error("配置文件中未获取有效的AccessTokenMode");
|
|
return ApiResult.Failed("配置文件中未获取有效的AccessTokenMode");
|
|
}
|
|
var openResult = AizhuhotelHelper.GetWxSericeOpenId(req.Code);
|
|
if (!openResult.IsSuccess) return ApiResult.Failed(openResult.Msg);
|
|
|
|
string serviceOpen = openResult.Info;
|
|
var anyM = Db.Queryable<UcLogin>().Where(t => t.OpId != req.UserAccount && t.WxServiceId == serviceOpen).First();
|
|
if (anyM != null)
|
|
{
|
|
return ApiResult.Failed($"当前微信已绑定了账号{anyM.OpId}");
|
|
}
|
|
|
|
|
|
user.WxServiceId = openResult.Info;
|
|
Update(user);
|
|
|
|
string newData = JsonConvert.SerializeObject(user);
|
|
|
|
return ApiResult.Success();
|
|
}
|
|
return ApiResult.Success();
|
|
}
|
|
|
|
|
|
public ApiResult<List<LoginUserRes>> GetSendUserList(BindUserReq req)
|
|
{
|
|
ApiResult<LoginUserRes> loginUserRes = null;
|
|
if (req != null && !string.IsNullOrEmpty(req.AccountDES))
|
|
{
|
|
loginUserRes = BaseRepo.DECLoginInfo(req.AccountDES);
|
|
if (!loginUserRes.IsSuccess) return ApiResult<List<LoginUserRes>>.Failed(loginUserRes.Msg);
|
|
}
|
|
var ls = Db.Queryable<UcLogin>()
|
|
.Where(t => t.Apptsend == "T" && t.Locked == "F")
|
|
.WhereIF(loginUserRes != null, t => t.OpId != loginUserRes.Info.UserAccount)
|
|
.Select(t => new LoginUserRes { UserAccount = t.OpId, UserName = t.OpName, UserGroup = t.OpGroup }).ToList().Replace();
|
|
return ApiResult<List<LoginUserRes>>.Success(string.Empty, ls);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 当前用户角色是否具有转审权限
|
|
/// </summary>
|
|
/// <param name="req"></param>
|
|
/// <returns></returns>
|
|
public ApiResult<List<LoginUserRes>> GetTransferAuditUserList(BindUserReq req)
|
|
{
|
|
List<LoginUserRes> loginUseList = new List<LoginUserRes>();
|
|
var loginUserRes = BaseRepo.DECLoginInfo(req.AccountDES);
|
|
if (!loginUserRes.IsSuccess) return ApiResult<List<LoginUserRes>>.Failed(loginUserRes.Msg);
|
|
|
|
loginUseList = Db.Queryable<UcLogin>()
|
|
.Where(t => t.Appttrans == "T" && !SqlFunc.IsNullOrEmpty(t.WxOpenId) && !SqlFunc.IsNullOrEmpty(t.WxServiceId) && t.Locked == "F" && t.OpId != loginUserRes.Info.UserAccount)
|
|
.Select(t => new LoginUserRes()
|
|
{
|
|
UserAccount = t.OpId,
|
|
UserName = t.OpName
|
|
}).ToList();
|
|
loginUseList = loginUseList.Replace();
|
|
return ApiResult<List<LoginUserRes>>.Success(string.Empty, loginUseList);
|
|
}
|
|
|
|
}
|
|
}
|