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; } /// /// 账号与密码登录 /// /// 账号 /// 密码 /// 公众号Code /// 酒店Id /// public ApiResult UserNameLogin(string userName, string userPwd, string code, string hotelid) { var user = Db.Queryable() .Where(t => t.OpId == userName && t.Password == userPwd).First(); if (user == null) return ApiResult.Failed("登录失败,用户不存在!"); user = user.Replace(); if (user.Locked == "T") return ApiResult.Failed("登录失败,账号锁定!"); if (!string.IsNullOrWhiteSpace(code)) { ApiResult resultOpen = new WechatHelper().Code2Session(code); if (!resultOpen.IsSuccess) return ApiResult.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().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.Success(string.Empty, new UserInfoRes() { BindStatus = bindStatus, UserAccount = user.OpId, Token = wxmpAppid, Role = role ? 1 : 0, AccountDES = userToken }); } public ApiResult WxLogin(string code, string hotelid) { if (string.IsNullOrWhiteSpace(code)) return ApiResult.Failed("未获取有效的微信信息"); ApiResult resultOpen = new WechatHelper().Code2Session(code); if (!resultOpen.IsSuccess) return ApiResult.Failed(resultOpen.Msg); var user = Db.Queryable() .Where(t => t.WxOpenId == resultOpen.Info.Openid).First(); if (user == null) return ApiResult.Failed("登录失败,该微信未绑定,可以通过工号登录实现绑定!"); user = user.Replace(); if (user.Locked == "T") return ApiResult.Failed("登录失败,账号锁定!"); var role = Db.Queryable().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.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().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().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> GetSendUserList(BindUserReq req) { ApiResult loginUserRes = null; if (req != null && !string.IsNullOrEmpty(req.AccountDES)) { loginUserRes = BaseRepo.DECLoginInfo(req.AccountDES); if (!loginUserRes.IsSuccess) return ApiResult>.Failed(loginUserRes.Msg); } var ls = Db.Queryable() .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>.Success(string.Empty, ls); } /// /// 当前用户角色是否具有转审权限 /// /// /// public ApiResult> GetTransferAuditUserList(BindUserReq req) { List loginUseList = new List(); var loginUserRes = BaseRepo.DECLoginInfo(req.AccountDES); if (!loginUserRes.IsSuccess) return ApiResult>.Failed(loginUserRes.Msg); loginUseList = Db.Queryable() .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>.Success(string.Empty, loginUseList); } } }