| | |
| | | using Newtonsoft.Json; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Configuration; |
| | | using System.Data; |
| | | using System.Linq; |
| | | using System.Net; |
| | |
| | | //定义全局信息返回变量 |
| | | ToMessage mes = new ToMessage(); |
| | | RedisHelper redis = new RedisHelper(); |
| | | //获取企业配置Enterprise |
| | | private static readonly string Enterprise = ConfigurationManager.AppSettings["Enterprise"]; |
| | | |
| | | #region[PC用户登录] |
| | | /// <summary> |
| | | /// 用户登录 |
| | | /// PC用户登录 |
| | | /// </summary> |
| | | /// <param name="username">用户名</param> |
| | | /// <param name="username">用户编码</param> |
| | | /// <param name="password">密码</param> |
| | | /// <param name="usertype">操作端类型(PC APP)</param> |
| | | /// <returns></returns> |
| | | [Route(template: "LoginSave")] |
| | | [HttpGet] |
| | | public HttpResponseMessage LoginSave(string username, string password) |
| | | public HttpResponseMessage LoginSave(string username, string password, string usertype) |
| | | { |
| | | DataTable dt = LoginBLL.LoginSearch(username,password); |
| | | if (dt.Rows.Count > 0) |
| | | try |
| | | { |
| | | List<User> mss = new List<User>(); |
| | | User ms = new User(); |
| | | //ms.guid=Guid.NewGuid().ToString(); |
| | | ms.userid = Convert.ToInt32(dt.Rows[0]["ID"].ToString()); |
| | | ms.username = dt.Rows[0]["USERNAME"].ToString(); |
| | | ms.password = dt.Rows[0]["PASSWORD"].ToString(); |
| | | ms.usertype = "PC"; |
| | | mss.Add(ms); |
| | | HttpContext.Current.Session["User"] = JsonConvert.SerializeObject(ms); |
| | | User loginUser = JsonConvert.DeserializeObject<User>(HttpContext.Current.Session["User"].ToString()); |
| | | //如果redis登录用户中不存在当前用户 |
| | | if (redis.Get<User>("LoginUserID" + ms.userid, 0) == null) |
| | | DataTable dt = LoginBLL.LoginSearch(username, password); |
| | | if (dt.Rows.Count > 0) |
| | | { |
| | | //redis.Remove("LoginUserID" + ms.userid, 0); |
| | | //写入redis(注意:redis类里面的失效时间必须在key创建完成之后才生效) |
| | | redis.Set<User>("LoginUserID" + ms.userid, ms, redis.secondsTimeOut, 0); |
| | | mes.code = "200"; |
| | | mes.Message = "登录成功!"; |
| | | mes.data = ms; |
| | | } |
| | | else //如果存在 |
| | | { |
| | | //获取redis中当前用户信息 |
| | | User r_loginUser = redis.Get<User>("LoginUserID" + ms.userid, 0); |
| | | //如果session中的用户guid和redis中的用户guid匹配 |
| | | if (r_loginUser.guid.Equals(loginUser.guid)) |
| | | List<User> mss = new List<User>(); |
| | | User ms = new User(); |
| | | ms.guid = username + password + Guid.NewGuid().ToString(); |
| | | ms.userid = Convert.ToInt32(dt.Rows[0]["ID"].ToString()); |
| | | ms.usercode = dt.Rows[0]["USERCODE"].ToString(); |
| | | ms.username = dt.Rows[0]["USERNAME"].ToString(); |
| | | ms.password = dt.Rows[0]["PASSWORD"].ToString(); |
| | | ms.usertype = usertype; |
| | | ms.rediskey = Enterprise+"LoginUserID" + ms.usertype + ms.userid; |
| | | mss.Add(ms); |
| | | HttpContext.Current.Session.Clear(); //从会话状态集合中删除所有的键值 |
| | | //HttpContext.Current.Session["User"] = JsonConvert.SerializeObject(ms); |
| | | //User loginUser = JsonConvert.DeserializeObject<User>(HttpContext.Current.Session["User"].ToString()); |
| | | User loginUser = JsonConvert.DeserializeObject<User>(JsonConvert.SerializeObject(ms)); |
| | | //如果redis登录用户中不存在当前用户 |
| | | if (redis.Get<User>(Enterprise+"LoginUserID" + ms.usertype + ms.userid, 0) == null) |
| | | { |
| | | //重置过期时间(注意:redis类里面的失效时间必须在key创建完成之后才生效) |
| | | redis.Set<User>("LoginUserID" + loginUser.userid, loginUser, redis.secondsTimeOut, 0); |
| | | //redis.Remove("LoginUserID" + ms.userid, 0); |
| | | //写入redis(注意:redis类里面的失效时间必须在key创建完成之后才生效) |
| | | redis.Set<User>(Enterprise+"LoginUserID" + ms.usertype + ms.userid, ms, redis.secondsTimeOut, 0); |
| | | //登录信息写入session |
| | | HttpContext.Current.Session["User"] = JsonConvert.SerializeObject(ms); |
| | | //写入登录操作记录 |
| | | mes = LoginBLL.LoginBas(ms.usercode, ms.usertype); |
| | | mes.code = "200"; |
| | | mes.Message = "登录成功!"; |
| | | mes.data = ms; |
| | | } |
| | | else |
| | | else //如果存在 |
| | | { |
| | | mes.code = "300"; |
| | | mes.Message = "当前账号已登录!"; |
| | | //获取redis中当前用户信息 |
| | | User r_loginUser = redis.Get<User>(Enterprise + "LoginUserID" + ms.usertype + ms.userid, 0); |
| | | //如果session中的用户usercode和redis中的用户usercode匹配 |
| | | if ((r_loginUser.usercode + r_loginUser.usertype).Equals(loginUser.usercode + loginUser.usertype)) |
| | | { |
| | | mes.data = ms; |
| | | mes.code = "302"; |
| | | mes.Message = "当前账号已登录,是否强制下线!"; |
| | | } |
| | | else |
| | | { |
| | | //重置过期时间(注意:redis类里面的失效时间必须在key创建完成之后才生效) |
| | | redis.Set<User>(Enterprise+"LoginUserID" + ms.usertype + loginUser.userid, loginUser, redis.secondsTimeOut, 0); |
| | | //登录信息写入session |
| | | HttpContext.Current.Session["User"] = JsonConvert.SerializeObject(ms); |
| | | //写入登录操作记录 |
| | | mes = LoginBLL.LoginBas(ms.usercode, ms.usertype); |
| | | mes.data = ms; |
| | | mes.code = "200"; |
| | | mes.Message = "登录成功!"; |
| | | } |
| | | } |
| | | } |
| | | // 链表存储 |
| | | //RedisHelpers.AddEntityToList<List<User>>("003", mss); |
| | | //RedisHelpers.AddEntityToList<User>("004", ms); |
| | | // 链表存储 |
| | | //RedisHelpers.AddEntityToList<List<User>>("003", mss); |
| | | //RedisHelpers.AddEntityToList<User>("004", ms); |
| | | |
| | | //Console.WriteLine(RedisHelpers.Get<User>("001", 1)); |
| | | //Console.WriteLine(RedisHelpers.Get<List<User>>("002", 3)); |
| | | |
| | | //Console.WriteLine(RedisHelpers.Get<User>("001", 1)); |
| | | //Console.WriteLine(RedisHelpers.Get<List<User>>("002", 3)); |
| | | |
| | | } |
| | | else |
| | | { |
| | | mes.code = "300"; |
| | | mes.Message = "账号或密码不正确!"; |
| | | } |
| | | } |
| | | else |
| | | catch (Exception e) |
| | | { |
| | | mes.code = "300"; |
| | | mes.Message = "账号或密码不正确!"; |
| | | mes.Message = e.Message; |
| | | } |
| | | |
| | | return mes.ResponseMess(mes); |
| | | } |
| | | #endregion |
| | | |
| | | #region[强制下线接口] |
| | | /// <summary> |
| | | /// 强制下线接口 |
| | | /// </summary> |
| | | /// <param name="userid">用户id</param> |
| | | /// <param name="usercode">用户编码</param> |
| | | /// <param name="username">用户名</param> |
| | | /// <param name="usertype">操作端PC/APP</param> |
| | | /// <returns></returns> |
| | | [Route(template: "ForcedOffline")] |
| | | [HttpPost] |
| | | public HttpResponseMessage ForcedOffline(int userid, string usercode, string username, string usertype) |
| | | { |
| | | try |
| | | { |
| | | redis.Remove(Enterprise+"LoginUserID" + usertype + userid, 0); //删除redis |
| | | mes.code = "200"; |
| | | mes.count = 0; |
| | | mes.Message = "强制下线成功!"; |
| | | mes.data = null; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | mes.code = "300"; |
| | | mes.count = 0; |
| | | mes.Message = e.Message; |
| | | mes.data = null; |
| | | } |
| | | return mes.ResponseMess(mes); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region[查询登录菜单] |
| | | /// <summary> |
| | | /// 查询功能菜单 |
| | | /// 查询登录菜单 |
| | | /// </summary> |
| | | /// <param name="usertype">操作端类型(PC APP)</param> |
| | | /// <param name="usercode">登录用户编码</param> |
| | | /// <returns></returns> |
| | | [Route(template: "LoginMenu")] |
| | | [HttpGet] |
| | | public HttpResponseMessage LoginMenu() |
| | | public HttpResponseMessage LoginMenu(string usertype, string usercode) |
| | | { |
| | | string usercode = HttpContext.Current.Request.Cookies["usercode"].ToString(); |
| | | mes = LoginBLL.LoginMenu(usercode); |
| | | try |
| | | { |
| | | //var usercode = HttpContext.Current.Request.Cookies["navTabId"].Value.ToString(); |
| | | mes = LoginBLL.LoginMenu(usercode, usertype); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | mes.code = "300"; |
| | | mes.Message = e.Message; |
| | | } |
| | | return TJson.toJson(mes); |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | #region[修改密码] |
| | | /// <summary> |
| | | /// 修改密码 |
| | | /// </summary> |
| | | /// <param name="username">用户名</param> |
| | | /// <param name="usercode">用户编码</param> |
| | | /// <param name="username">用户名称</param> |
| | | /// <param name="password">密码</param> |
| | | /// <param name="newpassword">新密码</param> |
| | | /// <returns></returns> |
| | | [Route(template: "UpdateUserPassword")] |
| | | [ChannelActionFilter, Route(template: "UpdateUserPassword")] |
| | | [HttpPost] |
| | | public HttpResponseMessage UpdateUserPassword(string username, string password,string newpassword) |
| | | public HttpResponseMessage UpdateUserPassword(string usercode, string username, string password, string newpassword) |
| | | { |
| | | mes = LoginBLL.UpdateUserPassword(username, password,newpassword); |
| | | mes = LoginBLL.UpdateUserPassword(usercode, username, password, newpassword); |
| | | return mes.ResponseMess(mes); |
| | | } |
| | | #endregion |
| | | |
| | | #region[PC登出] |
| | | /// <summary> |
| | | /// PC登出 |
| | | /// </summary> |
| | | /// <param name="userid">用户id</param> |
| | | /// <param name="usercode">用户编码</param> |
| | | /// <param name="username">用户名</param> |
| | | /// <param name="usertype">操作端PC/APP</param> |
| | | /// <returns></returns> |
| | | [Route(template: "LoginOut")] |
| | | [HttpPost] |
| | | [ChannelActionFilter] |
| | | public HttpResponseMessage LoginOut(int userid, string usercode, string username, string usertype) |
| | | { |
| | | mes = LoginBLL.LoginOut(userid, usercode, username, usertype); |
| | | return mes.ResponseMess(mes); |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | #region[APP用户登录] |
| | | /// <summary> |
| | | /// APP用户登录 |
| | | /// </summary> |
| | | /// <param name="username">用户编码</param> |
| | | /// <param name="password">密码</param> |
| | | /// <param name="usertype">操作端类型(PC APP)</param> |
| | | /// <returns></returns> |
| | | [Route(template: "LoginAppSave")] |
| | | [HttpGet] |
| | | public HttpResponseMessage LoginAppSave(string username, string password, string usertype) |
| | | { |
| | | try |
| | | { |
| | | DataTable dt = LoginBLL.LoginSearch(username, password); |
| | | if (dt.Rows.Count > 0) |
| | | { |
| | | List<User> mss = new List<User>(); |
| | | User ms = new User(); |
| | | ms.guid = username + password + Guid.NewGuid().ToString(); |
| | | ms.userid = Convert.ToInt32(dt.Rows[0]["ID"].ToString()); |
| | | ms.usercode = dt.Rows[0]["USERCODE"].ToString(); |
| | | ms.username = dt.Rows[0]["USERNAME"].ToString(); |
| | | ms.password = dt.Rows[0]["PASSWORD"].ToString(); |
| | | ms.usertype = usertype; |
| | | mss.Add(ms); |
| | | |
| | | mes.code = "200"; |
| | | mes.Message = "登录成功!"; |
| | | mes.data = ms; |
| | | } |
| | | else |
| | | { |
| | | mes.code = "300"; |
| | | mes.Message = "账号或密码不正确!"; |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | mes.code = "300"; |
| | | mes.Message = e.Message; |
| | | } |
| | | |
| | | return mes.ResponseMess(mes); |
| | | } |
| | | #endregion |
| | | |
| | | #region[APP登出] |
| | | /// <summary> |
| | | /// APP登出 |
| | | /// </summary> |
| | | /// <param name="userid">用户id</param> |
| | | /// <param name="usercode">用户编码</param> |
| | | /// <param name="username">用户名</param> |
| | | /// <param name="usertype">操作端PC/APP</param> |
| | | /// <returns></returns> |
| | | [Route(template: "LoginAppOut")] |
| | | [HttpPost] |
| | | public HttpResponseMessage LoginAppOut(int userid, string usercode, string username, string usertype) |
| | | { |
| | | mes = LoginBLL.LoginAppOut(userid, usercode, username, usertype); |
| | | return mes.ResponseMess(mes); |
| | | } |
| | | #endregion |
| | | |
| | | #region[App登录查询安灯呼叫信息] |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | /// <param name="userid">用户id</param> |
| | | /// <param name="usercode">用户编码</param> |
| | | /// <param name="username">用户名称</param> |
| | | /// <param name="usertype">操作端PC/APP</param> |
| | | /// <returns></returns> |
| | | [Route(template: "LoginAppAnDonMessage")] |
| | | [HttpPost] |
| | | public HttpResponseMessage LoginAppAnDonMessage(int userid, string usercode, string username, string usertype) |
| | | { |
| | | mes = LoginBLL.LoginAppAnDonMessage(userid, usercode, username, usertype); |
| | | return TJson.toJson(mes); |
| | | //return mes.ResponseMess(mes); |
| | | } |
| | | #endregion |
| | | } |
| | | } |