VueWebCoreApi/Controllers/LoginController.cs
@@ -24,13 +24,13 @@
        private static readonly string Enterprise = AppSetting.GetAppSetting("Enterprise");
        #region[用户登录(PC/APP)]
        #region[用户登录(PC)]
        /// <summary>
        /// 用户登录(PC/APP)
        /// 用户登录(PC)
        /// </summary>
        /// <param name="username">用户编码</param>
        /// <param name="password">密码</param>
        /// <param name="usertype">操作端类型(PC APP)</param>
        /// <param name="usertype">操作端类型(PC)</param>
        /// <returns></returns>
        [Route(template: "LoginSave")]
        [HttpGet]
@@ -80,7 +80,7 @@
                        //写入登录操作记录 
                        LogHelper.DbOperateLog(ms.usercode, "登录", "登录了系统", ms.usertype);
                        mes.code = "200";
                        mes.Message = "登录成功!";
                        mes.message = "登录成功!";
                        mes.data = ms.token.ToString();
                    }
                    else //如果存在
@@ -92,7 +92,7 @@
                        {
                            mes.data = ms.token.ToString();
                            mes.code = "302";
                            mes.Message = "当前账号已登录,是否强制下线!";
                            mes.message = "当前账号已登录,是否强制下线!";
                        }
                        else
                        {
@@ -102,7 +102,7 @@
                            LogHelper.DbOperateLog(ms.usercode, "登录", "登录了系统", ms.usertype);
                            mes.data = ms;
                            mes.code = "200";
                            mes.Message = "登录成功!";
                            mes.message = "登录成功!";
                        }
                    }
                }
@@ -110,7 +110,7 @@
            catch (Exception e)
            {
                mes.code = "300";
                mes.Message = e.Message;
                mes.message = e.Message;
                mes.data = null;
            }
@@ -162,14 +162,14 @@
                LogHelper.DbOperateLog(us.usercode, "强制下线", "被强制下线了", us.usertype);
                mes.code = "200";
                mes.count = 0;
                mes.Message = "强制下线成功!";
                mes.message = "强制下线成功!";
                mes.data = null;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.message = e.Message;
                mes.data = null;
            }
            return Json(mes);
@@ -198,7 +198,7 @@
            catch (Exception e)
            {
                mes.code = "300";
                mes.Message = e.Message;
                mes.message = e.Message;
            }
            return Json(mes);
        }
@@ -239,6 +239,99 @@
        }
        #endregion
        #region[APP用户登录]
        /// <summary>
        /// APP用户登录
        /// </summary>
        /// <param name="username">用户编码</param>
        /// <param name="password">密码</param>
        /// <param name="usertype">操作端类型(APP)</param>
        /// <returns></returns>
        [Route(template: "LoginAppSave")]
        [HttpGet]
        public JsonResult LoginAppSave(string username, string password, string usertype)
        {
            try
            {
                Dictionary<string, object> payLoad = new Dictionary<string, object>();
                mes = LoginBLL.LoginSearch(username, password);
                if (mes.code == "200")
                {
                    DataTable dt = (DataTable)mes.data;
                    //jwt生成Token前的用户信息
                    payLoad.Add("usercode", dt.Rows[0]["usercode"].ToString());
                    payLoad.Add("username", dt.Rows[0]["username"].ToString());
                    payLoad.Add("storg_code", dt.Rows[0]["storg_code"].ToString());
                    payLoad.Add("storg_name", dt.Rows[0]["storg_name"].ToString());
                    payLoad.Add("is_system_admin", dt.Rows[0]["is_system_admin"].ToString());
                    payLoad.Add("role_code", dt.Rows[0]["role_code"].ToString());
                    payLoad.Add("role_datapermissions", dt.Rows[0]["role_datapermissions"].ToString());
                    payLoad.Add("usertype", usertype);
                    payLoad.Add("rediskey", Enterprise + "LoginUserID" + usertype + JwtTools.FindFirstKeyByValue(payLoad, "usercode"));
                    //获取jwt生成token
                    mes = JwtTools.Encode(payLoad);
                    List<User> mss = new List<User>();
                    User ms = new User();
                    ms.usercode = dt.Rows[0]["usercode"].ToString();
                    ms.username = dt.Rows[0]["username"].ToString();
                    ms.storg_code = dt.Rows[0]["storg_code"].ToString();
                    ms.storg_name = dt.Rows[0]["storg_name"].ToString();
                    ms.is_system_admin = dt.Rows[0]["is_system_admin"].ToString();
                    ms.role_code = dt.Rows[0]["role_code"].ToString();
                    ms.role_datapermissions = dt.Rows[0]["role_datapermissions"].ToString();
                    ms.usertype = usertype;
                    ms.rediskey = Enterprise + "LoginUserID" + ms.usertype + ms.usercode;
                    ms.token = mes.data.ToString();
                    mss.Add(ms);
                    User loginUser = JsonConvert.DeserializeObject<User>(JsonConvert.SerializeObject(ms));
                    //如果redis登录用户中不存在当前用户
                    if (redis.Get<User>(ms.rediskey, 0) == null)
                    {
                        //写入redis(注意:redis类里面的失效时间必须在key创建完成之后才生效)
                        redis.Set<User>(ms.rediskey, ms, redis.secondsTimeOut, 0);
                        //写入登录操作记录
                        LogHelper.DbOperateLog(ms.usercode, "登录", "登录了系统", ms.usertype);
                        mes.code = "200";
                        mes.message = "登录成功!";
                        mes.data = ms.token.ToString();
                    }
                    else //如果存在
                    {
                        //获取redis中当前用户信息
                        User r_loginUser = redis.Get<User>(ms.rediskey, 0);
                        //如果session中的用户usercode和redis中的用户usercode匹配
                        if ((r_loginUser.rediskey).Equals(loginUser.rediskey))
                        {
                            redis.Remove(loginUser.rediskey, 0);//删除redis
                            redis.Set<User>(loginUser.rediskey, ms, redis.secondsTimeOut, 0);//写入redis
                        }
                        else
                        {
                            //重置过期时间(注意:redis类里面的失效时间必须在key创建完成之后才生效)
                            redis.Set<User>(loginUser.rediskey, loginUser, redis.secondsTimeOut, 0);
                            //写入登录操作记录
                            LogHelper.DbOperateLog(ms.usercode, "登录", "登录了系统", ms.usertype);
                            mes.data = ms;
                            mes.code = "200";
                            mes.message = "登录成功!";
                        }
                    }
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.message = e.Message;
                mes.data = null;
            }
            return Json(mes);
        }
        #endregion
        #region[APP密码重置]
        /// <summary>
        /// APP密码重置
@@ -276,5 +369,19 @@
            //return mes.ResponseMess(mes);
        }
        #endregion
        #region[App版本升级接口]
        /// <summary>
        /// App版本升级接口
        /// </summary>
        /// <returns></returns>
        [Route(template: "AppUpgrade")]
        [HttpPost]
        public JsonResult AppUpgrade()
        {
            mes = LoginBLL.AppUpgrade();
            return Json(mes);
        }
        #endregion
    }
}