public async Task <IActionResult> CreateDBConn(DbConnInfo dbConnInfo)
        {
            CommonResult result       = new CommonResult();
            DBConnResult dBConnResult = new DBConnResult();

            if (dbConnInfo != null)
            {
                if (string.IsNullOrEmpty(dbConnInfo.DbName))
                {
                    dbConnInfo.DbName = "master";
                }
                else if (string.IsNullOrEmpty(dbConnInfo.DbAddress))
                {
                    result.ErrMsg = "访问地址不能为空";
                }
                else if (string.IsNullOrEmpty(dbConnInfo.DbUserName))
                {
                    result.ErrMsg = "访问用户不能为空";
                }
                else if (string.IsNullOrEmpty(dbConnInfo.DbPassword))
                {
                    result.ErrMsg = "访问密码不能为空";
                }
                if (string.IsNullOrEmpty(dbConnInfo.DbPort.ToString()))
                {
                    if (dbConnInfo.DbType == "SqlServer")
                    {
                        dbConnInfo.DbPort = 1433;
                    }
                    else if (dbConnInfo.DbType == "MySql")
                    {
                        dbConnInfo.DbPort = 3306;
                    }
                }
                if (dbConnInfo.DbType == "SqlServer")
                {
                    dBConnResult.ConnStr = string.Format("Server={0},{1};Database={2};User id={3}; password={4};MultipleActiveResultSets=True;", dbConnInfo.DbAddress, dbConnInfo.DbPort, dbConnInfo.DbName, dbConnInfo.DbUserName, dbConnInfo.DbPassword);
                }
                else if (dbConnInfo.DbType == "MySql")
                {
                    dBConnResult.ConnStr = string.Format("server={0};database={1};uid={2}; pwd={3};port={4};Allow User Variables=True;", dbConnInfo.DbAddress, dbConnInfo.DbName, dbConnInfo.DbUserName, dbConnInfo.DbPassword, dbConnInfo.DbPort);
                }
                YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper();
                TimeSpan          expiresSliding    = DateTime.Now.AddMinutes(30) - DateTime.Now;
                yuebonCacheHelper.Add("CodeGeneratorDbConn", dBConnResult.ConnStr, expiresSliding, false);
                yuebonCacheHelper.Add("CodeGeneratorDbType", dbConnInfo.DbType, expiresSliding, false);
                yuebonCacheHelper.Add("CodeGeneratorDbName", dbConnInfo.DbName, expiresSliding, false);
                DbExtractor         dbExtractor = new DbExtractor();
                List <DataBaseInfo> listTable   = dbExtractor.GetAllDataBases();
                result.ResData = listTable;
                result.Success = true;
                result.ErrCode = ErrCode.successCode;
            }
            return(ToJsonContent(result));
        }
Esempio n. 2
0
        /// <summary>
        /// 数据库连接,根据数据库类型自动识别,类型区分用配置名称是否包含主要关键字
        /// MSSQL、MYSQL、ORACLE、SQLITE、MEMORY、NPGSQL
        /// </summary>
        /// <returns></returns>
        public DbConnection OpenSharedConnection()
        {
            YuebonCacheHelper   yuebonCacheHelper   = new YuebonCacheHelper();
            object              connCode            = yuebonCacheHelper.Get("CodeGeneratorDbConn");
            DbConnectionOptions dbConnectionOptions = DBServerProvider.GeDbConnectionOptions();
            DatabaseType        dbType = DatabaseType.SqlServer;

            if (connCode != null)
            {
                defaultSqlConnectionString = connCode.ToString();
                string dbTypeCache = yuebonCacheHelper.Get("CodeGeneratorDbType").ToString();
                dbType = (DatabaseType)Enum.Parse(typeof(DatabaseType), dbTypeCache);
            }
            else
            {
                defaultSqlConnectionString = dbConnectionOptions.ConnectionString;

                dbType = dbConnectionOptions.DatabaseType;
                TimeSpan expiresSliding = DateTime.Now.AddMinutes(30) - DateTime.Now;
                yuebonCacheHelper.Add("CodeGeneratorDbConn", defaultSqlConnectionString, expiresSliding, false);
                yuebonCacheHelper.Add("CodeGeneratorDbType", dbType, expiresSliding, false);
            }
            if (dbType == DatabaseType.SqlServer)
            {
                dbConnection = new SqlConnection(defaultSqlConnectionString);
            }
            else if (dbType == DatabaseType.MySql)
            {
                dbConnection = new MySqlConnection(defaultSqlConnectionString);
            }
            else if (dbType == DatabaseType.Oracle)
            {
                dbConnection = new OracleConnection(defaultSqlConnectionString);
            }
            else if (dbType == DatabaseType.SQLite)
            {
                dbConnection = new SqliteConnection(defaultSqlConnectionString);
            }
            else if (dbType == DatabaseType.Npgsql)
            {
                dbConnection = new NpgsqlConnection(defaultSqlConnectionString);
            }
            else
            {
                throw new NotSupportedException("The database is not supported");
            }
            if (dbConnection.State != ConnectionState.Open)
            {
                dbConnection.Open();
            }
            return(dbConnection);
        }
Esempio n. 3
0
        public IActionResult YuebonConnecSys(string systype)
        {
            CommonResult result = new CommonResult();

            try
            {
                if (!string.IsNullOrEmpty(systype))
                {
                    SystemType        systemType        = iService.GetByCode(systype);
                    string            openmf            = MD5Util.GetMD5_32(DEncrypt.Encrypt(CurrentUser.UserId + systemType.Id, GuidUtils.NewGuidFormatN())).ToLower();
                    YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper();
                    TimeSpan          expiresSliding    = DateTime.Now.AddSeconds(20) - DateTime.Now;
                    yuebonCacheHelper.Add("openmf" + openmf, CurrentUser.UserId, expiresSliding, false);
                    result.ErrCode = ErrCode.successCode;
                    result.ResData = systemType.Url + "?openmf=" + openmf;
                }
                else
                {
                    result.ErrCode = ErrCode.failCode;
                    result.ErrMsg  = "切换子系统参数错误";
                }
            }
            catch (Exception ex)
            {
                Log4NetHelper.Error("切换子系统异常", ex);
                result.ErrMsg  = ErrCode.err40110;
                result.ErrCode = "40110";
            }
            return(ToJsonContent(result));
        }
Esempio n. 4
0
        public void UpdateCacheAllowApp()
        {
            YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper();
            IEnumerable <APP> appList           = repository.GetAllByIsNotDeleteAndEnabledMark();

            yuebonCacheHelper.Add("AllowAppId", appList);
        }
        public CommonResult <PageResult <DbTableInfo> > FindListTable(SearchModel search)
        {
            CommonResult <PageResult <DbTableInfo> > result = new CommonResult <PageResult <DbTableInfo> >();

            if (!string.IsNullOrEmpty(search.EnCode))
            {
                YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper();
                object            connCode          = yuebonCacheHelper.Get("CodeGeneratorDbConn");
                if (connCode != null)
                {
                    string   SqlConnectionString = connCode.ToString();
                    string[] sqlconn             = SqlConnectionString.Split(";");
                    string[] dataName            = sqlconn[1].Split("=");
                    dataName[1] = search.EnCode;
                    sqlconn[1]  = dataName.Join("=");
                    string   newConnStr     = sqlconn.Join(";");
                    TimeSpan expiresSliding = DateTime.Now.AddMinutes(30) - DateTime.Now;
                    yuebonCacheHelper.Add("CodeGeneratorDbConn", newConnStr, expiresSliding, false);
                    yuebonCacheHelper.Add("CodeGeneratorDbName", search.EnCode, expiresSliding, false);
                }
            }
            string orderByDir = search.Order;
            string orderFlied = string.IsNullOrEmpty(search.Sort)? "TableName": search.Sort;
            bool   order      = orderByDir == "asc" ? false : true;

            string where = "1=1";
            if (!string.IsNullOrEmpty(search.Keywords))
            {
                where += " and TableName like '%" + search.Keywords + "%'";
            }
            PagerInfo pagerInfo = new PagerInfo {
                PageSize          = search.PageSize,
                CurrenetPageIndex = search.CurrenetPageIndex
            };
            DbExtractor        dbExtractor = new DbExtractor();
            List <DbTableInfo> listTable   = dbExtractor.GetTablesWithPage(search.Keywords, orderFlied, order, pagerInfo);

            PageResult <DbTableInfo> pageResult = new PageResult <DbTableInfo>();

            pageResult.CurrentPage  = pagerInfo.CurrenetPageIndex;
            pageResult.Items        = listTable;
            pageResult.ItemsPerPage = pagerInfo.PageSize;
            pageResult.TotalItems   = pagerInfo.RecordCount;
            result.ResData          = pageResult;
            result.ErrCode          = ErrCode.successCode;
            return(result);
        }
Esempio n. 6
0
        /// <summary>
        /// 初始化
        /// </summary>
        public virtual void Initial()
        {
            YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper();
            SysSetting        sysSetting        = XmlConverter.Deserialize <SysSetting>("xmlconfig/sys.config");

            if (sysSetting != null)
            {
                yuebonCacheHelper.Add("SysSetting", sysSetting);
            }
        }
Esempio n. 7
0
        public async Task <IActionResult> GetSysInfo()
        {
            CommonResult result = new CommonResult();

            try
            {
                SysSetting        sysSetting        = XmlConverter.Deserialize <SysSetting>("xmlconfig/sys.config");
                YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper();
                yuebonCacheHelper.Add("SysSetting", sysSetting);
                DashboardOutModel dashboardOutModel = new DashboardOutModel();
                dashboardOutModel.CertificatedCompany = sysSetting.CompanyName;
                dashboardOutModel.WebUrl               = sysSetting.WebUrl;
                dashboardOutModel.Title                = sysSetting.SoftName;
                dashboardOutModel.MachineName          = Environment.MachineName;
                dashboardOutModel.ProcessorCount       = Environment.ProcessorCount;
                dashboardOutModel.SystemPageSize       = Environment.SystemPageSize;
                dashboardOutModel.WorkingSet           = Environment.WorkingSet;
                dashboardOutModel.TickCount            = Environment.TickCount;
                dashboardOutModel.RunTimeLength        = (Environment.TickCount / 1000).ToBrowseTime();
                dashboardOutModel.FrameworkDescription = RuntimeInformation.FrameworkDescription;
                dashboardOutModel.OSName               = RuntimeInformation.IsOSPlatform(OSPlatform.Linux) ? "Linux" : RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ? "OSX" : "Windows";
                dashboardOutModel.OSDescription        = RuntimeInformation.OSDescription + " " + RuntimeInformation.OSArchitecture;
                dashboardOutModel.OSArchitecture       = RuntimeInformation.OSArchitecture.ToString();
                dashboardOutModel.ProcessArchitecture  = RuntimeInformation.ProcessArchitecture.ToString();

                dashboardOutModel.Directory = AppContext.BaseDirectory;
                Version version = Environment.Version;
                dashboardOutModel.SystemVersion = version.Major + "." + version.Minor + "." + version.Build;
                dashboardOutModel.Version       = AppVersionHelper.Version;
                dashboardOutModel.Manufacturer  = AppVersionHelper.Manufacturer;
                dashboardOutModel.WebSite       = AppVersionHelper.WebSite;
                dashboardOutModel.UpdateUrl     = AppVersionHelper.UpdateUrl;
                dashboardOutModel.IPAdress      = Request.HttpContext.Connection.LocalIpAddress.ToString();
                dashboardOutModel.Port          = Request.HttpContext.Connection.LocalPort.ToString();
                dashboardOutModel.TotalUser     = await userService.GetCountByWhereAsync("1=1");

                dashboardOutModel.TotalModule = await menuService.GetCountByWhereAsync("1=1");

                dashboardOutModel.TotalRole = await roleService.GetCountByWhereAsync("1=1");

                dashboardOutModel.TotalTask = await taskManagerService.GetCountByWhereAsync("1=1");

                result.ResData = dashboardOutModel;
                result.ErrCode = ErrCode.successCode;
            }
            catch (Exception ex)
            {
                Log4NetHelper.Error("获取系统信息异常", ex);
                result.ErrMsg  = ErrCode.err60001;
                result.ErrCode = "60001";
            }
            return(ToJsonContent(result));
        }
Esempio n. 8
0
        /// <summary>
        /// 获取所有可用的地区,用于uniapp下拉选项
        /// </summary>
        /// <returns></returns>
        public List <AreaPickerOutputDto> GetAllByEnable()
        {
            List <AreaPickerOutputDto> list = new List <AreaPickerOutputDto>();
            YuebonCacheHelper          yuebonCacheHelper = new YuebonCacheHelper();

            list = JsonConvert.DeserializeObject <List <AreaPickerOutputDto> >(yuebonCacheHelper.Get("Area_Enable_Uniapp").ToJson());
            if (list == null || list.Count <= 0)
            {
                List <Area> listFunction = _repository.GetAllByIsNotDeleteAndEnabledMark("Layers in (0,1,2)").OrderBy(t => t.SortCode).ToList();
                list = UniappViewJson(listFunction, "");
                yuebonCacheHelper.Add("Area_Enable_Uniapp", list);
            }
            return(list);
        }
Esempio n. 9
0
        /// <summary>
        /// 获取省可用的地区,用于select2下拉选项
        /// </summary>
        /// <returns></returns>
        public List <AreaSelect2OutDto> GetProvinceAll()
        {
            List <AreaSelect2OutDto> list = new List <AreaSelect2OutDto>();
            YuebonCacheHelper        yuebonCacheHelper = new YuebonCacheHelper();

            list = JsonConvert.DeserializeObject <List <AreaSelect2OutDto> >(yuebonCacheHelper.Get("Area_ProvinceToArea_Select2").ToJson());
            if (list == null || list.Count <= 0)
            {
                list = service.GetAllByIsNotDeleteAndEnabledMark("Layers =1").OrderBy(t => t.Id).ToList().MapTo <AreaSelect2OutDto>();

                yuebonCacheHelper.Add("Area_ProvinceToArea_Select2", list);
            }
            return(list);
        }
Esempio n. 10
0
        public IActionResult Save(SysSetting info)
        {
            CommonResult result = new CommonResult();

            info.LocalPath = _hostingEnvironment.WebRootPath;
            SysSetting sysSetting = XmlConverter.Deserialize <SysSetting>("xmlconfig/sys.config");

            sysSetting = info;
            //对关键信息加密
            if (!string.IsNullOrEmpty(info.Email))
            {
                sysSetting.Email = DEncrypt.Encrypt(info.Email);
            }
            if (!string.IsNullOrEmpty(info.Emailsmtp))
            {
                sysSetting.Emailsmtp = DEncrypt.Encrypt(info.Emailsmtp);
            }
            if (!string.IsNullOrEmpty(info.Emailpassword))
            {
                sysSetting.Emailpassword = DEncrypt.Encrypt(info.Emailpassword);
            }
            if (!string.IsNullOrEmpty(info.Smspassword))
            {
                sysSetting.Smspassword = DEncrypt.Encrypt(info.Smspassword);
            }
            if (!string.IsNullOrEmpty(info.Smsusername))
            {
                sysSetting.Smsusername = DEncrypt.Encrypt(info.Smsusername);
            }
            string uploadPath = _hostingEnvironment.WebRootPath + "/" + sysSetting.Filepath;

            if (!Directory.Exists(uploadPath))
            {
                Directory.CreateDirectory(uploadPath);
            }
            YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper();

            if (yuebonCacheHelper.Exists("SysSetting"))
            {
                yuebonCacheHelper.Replace("SysSetting", sysSetting);
            }
            else
            {
                //写入缓存
                yuebonCacheHelper.Add("SysSetting", sysSetting);
            }
            XmlConverter.Serialize <SysSetting>(sysSetting, "xmlconfig/sys.config");
            result.ErrCode = ErrCode.successCode;
            return(ToJsonContent(result));
        }
Esempio n. 11
0
        /// <summary>
        /// 获取县区,用于select2下拉选项
        /// </summary>
        /// <param name="id">城市Id</param>
        /// <returns></returns>
        public List <AreaSelect2OutDto> GetDistrictByCityId(string id)
        {
            List <AreaSelect2OutDto> list = new List <AreaSelect2OutDto>();
            YuebonCacheHelper        yuebonCacheHelper = new YuebonCacheHelper();

            list = JsonConvert.DeserializeObject <List <AreaSelect2OutDto> >(yuebonCacheHelper.Get("Area_DistrictToArea_Enable_Select2" + id).ToJson());
            if (list == null || list.Count <= 0)
            {
                string sqlWhere = string.Format("ParentId='{0}'", id);
                list = service.GetAllByIsNotDeleteAndEnabledMark(sqlWhere).OrderBy(t => t.Id).ToList().MapTo <AreaSelect2OutDto>();

                yuebonCacheHelper.Add("Area_DistrictToArea_Enable_Select2" + id, list);
            }
            return(list);
        }
Esempio n. 12
0
        public async Task <CommonResult <AuthGetVerifyCodeOutputDto> > CaptchaAsync()
        {
            Captcha captcha = new Captcha();
            var     code    = await captcha.GenerateRandomCaptchaAsync().ConfigureAwait(false);

            var result = await captcha.GenerateCaptchaImageAsync(code);

            YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper();
            TimeSpan          expiresSliding    = DateTime.Now.AddMinutes(5) - DateTime.Now;

            yuebonCacheHelper.Add("ValidateCode" + result.Timestamp.ToString("yyyyMMddHHmmssffff"), code, expiresSliding, false);
            AuthGetVerifyCodeOutputDto authGetVerifyCodeOutputDto = new AuthGetVerifyCodeOutputDto();

            authGetVerifyCodeOutputDto.Img = Convert.ToBase64String(result.CaptchaMemoryStream.ToArray());
            authGetVerifyCodeOutputDto.Key = result.Timestamp.ToString("yyyyMMddHHmmssffff");
            CommonResult <AuthGetVerifyCodeOutputDto> commonResult = new CommonResult <AuthGetVerifyCodeOutputDto>();

            commonResult.ErrCode = ErrCode.successCode;
            commonResult.ResData = authGetVerifyCodeOutputDto;
            return(commonResult);
        }
Esempio n. 13
0
        /// <summary>
        /// 获取省、市、县/区三级可用的地区,用于uniapp下拉选项
        /// </summary>
        /// <returns></returns>
        public List <AreaPickerOutputDto> GetProvinceToAreaByEnable()
        {
            List <AreaPickerOutputDto> list = new List <AreaPickerOutputDto>();
            YuebonCacheHelper          yuebonCacheHelper = new YuebonCacheHelper();

            list = JsonConvert.DeserializeObject <List <AreaPickerOutputDto> >(yuebonCacheHelper.Get("Area_ProvinceToArea_Enable_Uniapp").ToJson());
            if (list == null || list.Count <= 0)
            {
                List <Area> listFunctionTemp = _repository.GetAllByIsNotDeleteAndEnabledMark("Layers in (1,2,3)").OrderBy(t => t.Id).ToList();
                List <Area> listFunction     = new List <Area>();
                foreach (Area item in listFunctionTemp)
                {
                    if (item.Layers == 1)
                    {
                        item.ParentId = "";
                    }
                    listFunction.Add(item);
                }

                list = UniappViewJson(listFunction, "");
                yuebonCacheHelper.Add("Area_ProvinceToArea_Enable_Uniapp", list);
            }
            return(list);
        }
Esempio n. 14
0
        public IActionResult GetInfo()
        {
            CommonResult        result              = new CommonResult();
            YuebonCacheHelper   yuebonCacheHelper   = new YuebonCacheHelper();
            SysSetting          sysSetting          = yuebonCacheHelper.Get("SysSetting").ToJson().ToObject <SysSetting>();
            SysSettingOutputDto sysSettingOutputDto = new SysSettingOutputDto();

            if (sysSetting == null)
            {
                sysSetting = XmlConverter.Deserialize <SysSetting>("xmlconfig/sys.config");
            }
            sysSetting.Email         = "";
            sysSetting.Emailsmtp     = "";
            sysSetting.Emailpassword = "";
            sysSetting.Smspassword   = "";
            sysSetting.SmsSignName   = "";
            sysSetting.Smsusername   = "";
            sysSettingOutputDto      = sysSetting.MapTo <SysSettingOutputDto>();
            if (sysSettingOutputDto != null)
            {
                sysSettingOutputDto.CopyRight = UIConstants.CopyRight;
                result.ResData = sysSettingOutputDto;
                result.Success = true;
                result.ErrCode = ErrCode.successCode;
            }
            else
            {
                result.ErrMsg  = ErrCode.err60001;
                result.ErrCode = "60001";
            }

            IEnumerable <APP> appList = aPPService.GetAllByIsNotDeleteAndEnabledMark();

            yuebonCacheHelper.Add("AllowAppId", appList);
            return(ToJsonContent(result));
        }
Esempio n. 15
0
        /// <summary>
        /// 全局过滤器验证签名
        /// </summary>
        /// <param name="httpContext"></param>
        /// <returns></returns>
        public static CommonResult CheckSign(HttpContext httpContext)
        {
            CommonResult result = new CommonResult();
            //从http请求的头里面获取参数
            var    request   = httpContext.Request;
            var    appId     = ""; //客户端应用唯一标识
            string nonce     = ""; //随机字符串
            var    signature = ""; //参数签名,去除空参数,按字母倒序排序进行Md5签名 为了提高传参过程中,防止参数被恶意修改,在请求接口的时候加上sign可以有效防止参数被篡改
            long   timeStamp;      //时间戳, 校验5分钟内有效

            try
            {
                appId     = request.Headers["appId"].SingleOrDefault();
                nonce     = request.Headers["nonce"].SingleOrDefault();
                timeStamp = Convert.ToInt64(request.Headers["timeStamp"].SingleOrDefault());
                signature = request.Headers["signature"].SingleOrDefault();
            }
            catch (Exception ex)
            {
                result.ErrCode = "40004";
                result.ErrMsg  = "签名参数异常:" + ex.Message;
                return(result);
            }

            //appId是否为可用的
            AllowCacheApp allowCacheApp = VerifyAppId(appId);

            if (allowCacheApp == null)
            {
                result.ErrCode = "40004";
                result.ErrMsg  = "AppId不被允许访问:" + appId;
                return(result);
            }

            //判断timespan是否有效,请求是否超时
            DateTime tonow          = timeStamp.UnixTimeToDateTime();
            var      expires_minute = tonow.Minute - DateTime.Now.Minute;

            if (expires_minute > 5 || expires_minute < -5)
            {
                result.ErrCode = "40004";
                result.ErrMsg  = "接口请求超时";
                return(result);
            }

            //根据请求类型拼接参数
            NameValueCollection form = HttpUtility.ParseQueryString(request.QueryString.ToString());
            var data = string.Empty;

            if (form.Count > 0)
            {
                data = GetQueryString(form);
            }
            else
            {
                //request.EnableBuffering();
                request.Body.Seek(0, SeekOrigin.Begin);
                Stream       stream       = request.Body;
                StreamReader streamReader = new StreamReader(stream);
                data = streamReader.ReadToEndAsync().Result;
                request.Body.Seek(0, SeekOrigin.Begin);
            }
            YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper();
            object            reqtimeStampCache = yuebonCacheHelper.Get("request_" + timeStamp + nonce);

            if (reqtimeStampCache != null)
            {
                result.ErrCode = "40004";
                result.ErrMsg  = "无效签名";
                return(result);
            }
            TimeSpan expiresSliding = DateTime.Now.AddMinutes(120) - DateTime.Now;

            yuebonCacheHelper.Add("request_" + timeStamp + nonce, timeStamp + nonce, expiresSliding);
            bool blValidate = Validate(timeStamp.ToString(), nonce, allowCacheApp.AppSecret, data, signature);

            if (!blValidate)
            {
                result.ErrCode = "40004";
                result.ErrMsg  = "无效签名";
                return(result);
            }
            else
            {
                result.ErrCode = "0";
                result.Success = true;
                return(result);
            }
        }
Esempio n. 16
0
        public IActionResult LoginByOpenId(string openId)
        {
            CommonResult result = new CommonResult();

            try
            {
                YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper();
                User user = userService.GetUserByOpenId("yuebon.openid.wxapplet", openId);
                if (user == null)
                {
                    UserInputDto userInput = new UserInputDto();
                    userInput.OpenId     = openId;
                    userInput.OpenIdType = "yuebon.openid.wxapplet";
                    userInput.NickName   = "游客";
                    result.Success       = userService.CreateUserByWxOpenId(userInput);
                }
                string userId = string.Empty;
                if (result.ResData != null)
                {
                    userId = result.ResData.ToString();
                }
                if (user == null)
                {
                    user = userService.GetUserByOpenId("yuebon.openid.wxapplet", openId);
                }
                var currentSession = (YuebonCurrentUser)yuebonCacheHelper.Get("login_user_" + user.Id);
                if (currentSession == null || string.IsNullOrWhiteSpace(currentSession.AccessToken))
                {
                    JwtOption     jwtModel      = App.GetService <JwtOption>();
                    TokenProvider tokenProvider = new TokenProvider(jwtModel);
                    TokenResult   tokenResult   = tokenProvider.LoginToken(user, "wxapplet");
                    currentSession = new YuebonCurrentUser
                    {
                        UserId         = user.Id,
                        Account        = user.Account,
                        Name           = user.RealName,
                        NickName       = user.NickName,
                        AccessToken    = tokenResult.AccessToken,
                        AppKey         = "wxapplet",
                        CreateTime     = DateTime.Now,
                        HeadIcon       = user.HeadIcon,
                        Gender         = user.Gender,
                        ReferralUserId = user.ReferralUserId,
                        MemberGradeId  = user.MemberGradeId,
                        Role           = roleService.GetRoleEnCode(user.RoleId),
                        MobilePhone    = user.MobilePhone
                    };
                    TimeSpan expiresSliding = DateTime.Now.AddMinutes(120) - DateTime.Now;
                    yuebonCacheHelper.Add("login_user_" + user.Id, currentSession, expiresSliding, true);
                }
                CurrentUser    = currentSession;
                result.ErrCode = ErrCode.successCode;
                result.Success = true;
                result.ResData = currentSession; //new AuthorizeApp().GetAccessedControls(user.Account);
            }
            catch (Exception ex)
            {
                Log4NetHelper.Error("微信登录异常 LoginByOpenId", ex);
                result.ErrMsg  = "微信登录异常:" + ex.Message;
                result.ErrCode = ErrCode.successCode;
            }

            return(ToJsonContent(result));
        }
Esempio n. 17
0
        public IActionResult SysConnect(string openmf, string appId, string systemCode)
        {
            CommonResult   result         = new CommonResult();
            RemoteIpParser remoteIpParser = new RemoteIpParser();
            string         strIp          = remoteIpParser.GetClientIp(HttpContext).MapToIPv4().ToString();

            if (string.IsNullOrEmpty(openmf))
            {
                result.ErrMsg = "切换参数错误!";
            }

            bool blIp = _filterIPService.ValidateIP(strIp);

            if (blIp)
            {
                result.ErrMsg = strIp + "该IP已被管理员禁止登录!";
            }
            else
            {
                string ipAddressName = IpAddressUtil.GetCityByIp(strIp);
                if (string.IsNullOrEmpty(systemCode))
                {
                    result.ErrMsg = ErrCode.err40006;
                }
                else
                {
                    string strHost = Request.Host.ToString();
                    APP    app     = _appService.GetAPP(appId);
                    if (app == null)
                    {
                        result.ErrCode = "40001";
                        result.ErrMsg  = ErrCode.err40001;
                    }
                    else
                    {
                        if (!app.RequestUrl.Contains(strHost, StringComparison.Ordinal) && !strHost.Contains("localhost", StringComparison.Ordinal))
                        {
                            result.ErrCode = "40002";
                            result.ErrMsg  = ErrCode.err40002 + ",你当前请求主机:" + strHost;
                        }
                        else
                        {
                            SystemType systemType = _systemTypeService.GetByCode(systemCode);
                            if (systemType == null)
                            {
                                result.ErrMsg = ErrCode.err40006;
                            }
                            else
                            {
                                YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper();
                                object            cacheOpenmf       = yuebonCacheHelper.Get("openmf" + openmf);
                                yuebonCacheHelper.Remove("openmf" + openmf);
                                if (cacheOpenmf == null)
                                {
                                    result.ErrCode = "40007";
                                    result.ErrMsg  = ErrCode.err40007;
                                }
                                else
                                {
                                    User user = _userService.Get(cacheOpenmf.ToString());
                                    if (user != null)
                                    {
                                        result.Success = true;
                                        JwtOption         jwtModel       = App.GetService <JwtOption>();
                                        TokenProvider     tokenProvider  = new TokenProvider(jwtModel);
                                        TokenResult       tokenResult    = tokenProvider.LoginToken(user, appId);
                                        YuebonCurrentUser currentSession = new YuebonCurrentUser
                                        {
                                            UserId          = user.Id,
                                            Name            = user.RealName,
                                            AccessToken     = tokenResult.AccessToken,
                                            AppKey          = appId,
                                            CreateTime      = DateTime.Now,
                                            Role            = _roleService.GetRoleEnCode(user.RoleId),
                                            ActiveSystemId  = systemType.Id,
                                            CurrentLoginIP  = strIp,
                                            IPAddressName   = ipAddressName,
                                            ActiveSystemUrl = systemType.Url
                                        };
                                        TimeSpan expiresSliding = DateTime.Now.AddMinutes(120) - DateTime.Now;
                                        yuebonCacheHelper.Add("login_user_" + user.Id, currentSession, expiresSliding, true);
                                        CurrentUser    = currentSession;
                                        result.ResData = currentSession;
                                        result.ErrCode = ErrCode.successCode;
                                        result.Success = true;
                                    }
                                    else
                                    {
                                        result.ErrCode = ErrCode.failCode;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(ToJsonContent(result));
        }
Esempio n. 18
0
        public IActionResult GetUserInfo()
        {
            CommonResult      result            = new CommonResult();
            User              user              = _userService.Get(CurrentUser.UserId);
            YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper();
            SystemType        systemType        = _systemTypeService.Get(CurrentUser.ActiveSystemId);
            YuebonCurrentUser currentSession    = new YuebonCurrentUser
            {
                UserId         = user.Id,
                Account        = user.Account,
                Name           = user.RealName,
                NickName       = user.NickName,
                AccessToken    = CurrentUser.AccessToken,
                AppKey         = CurrentUser.AppKey,
                CreateTime     = DateTime.Now,
                HeadIcon       = user.HeadIcon,
                Gender         = user.Gender,
                ReferralUserId = user.ReferralUserId,
                MemberGradeId  = user.MemberGradeId,
                Role           = _roleService.GetRoleEnCode(user.RoleId),
                MobilePhone    = user.MobilePhone,
                OrganizeId     = user.OrganizeId,
                DeptId         = user.DepartmentId,
                CurrentLoginIP = CurrentUser.CurrentLoginIP,
                IPAddressName  = CurrentUser.IPAddressName,
                TenantId       = ""
            };

            CurrentUser = currentSession;

            CurrentUser.ActiveSystemId  = systemType.Id;
            CurrentUser.ActiveSystem    = systemType.FullName;
            CurrentUser.ActiveSystemUrl = systemType.Url;

            List <MenuOutputDto> listFunction = new List <MenuOutputDto>();
            MenuApp menuApp = new MenuApp();

            if (Permission.IsAdmin(CurrentUser))
            {
                CurrentUser.SubSystemList = _systemTypeService.GetAllByIsNotDeleteAndEnabledMark().MapTo <SystemTypeOutputDto>();
                //取得用户可使用的授权功能信息,并存储在缓存中
                listFunction            = menuApp.GetFunctionsBySystem(CurrentUser.ActiveSystemId);
                CurrentUser.MenusRouter = menuApp.GetVueRouter("", systemType.EnCode);
            }
            else
            {
                CurrentUser.SubSystemList = _systemTypeService.GetSubSystemList(user.RoleId);
                //取得用户可使用的授权功能信息,并存储在缓存中
                listFunction            = menuApp.GetFunctionsByUser(user.Id, CurrentUser.ActiveSystemId);
                CurrentUser.MenusRouter = menuApp.GetVueRouter(user.RoleId, systemType.EnCode);
            }
            UserLogOn userLogOn = _userLogOnService.GetByUserId(CurrentUser.UserId);

            CurrentUser.UserTheme = userLogOn.Theme == null ? "default" : userLogOn.Theme;
            TimeSpan expiresSliding = DateTime.Now.AddMinutes(120) - DateTime.Now;

            yuebonCacheHelper.Add("User_Function_" + user.Id, listFunction, expiresSliding, true);
            List <string> listModules = new List <string>();

            foreach (MenuOutputDto item in listFunction)
            {
                listModules.Add(item.EnCode);
            }
            CurrentUser.Modules = listModules;
            yuebonCacheHelper.Add("login_user_" + user.Id, CurrentUser, expiresSliding, true);
            //该用户的数据权限
            List <String> roleDateList = _roleDataService.GetListDeptByRole(user.RoleId);

            yuebonCacheHelper.Add("User_RoleData_" + user.Id, roleDateList, expiresSliding, true);
            result.ResData = CurrentUser;
            result.ErrCode = ErrCode.successCode;
            result.Success = true;
            return(ToJsonContent(result, true));
        }
Esempio n. 19
0
        public IActionResult OnLogin(string code)
        {
            CommonResult result = new CommonResult();

            try
            {
                var jsonResult = SnsApi.JsCode2Json(WxOpenAppId, WxOpenAppSecret, code);
                if (jsonResult.errcode == ReturnCode.请求成功)
                {
                    //使用SessionContainer管理登录信息(推荐)
                    var unionId    = jsonResult.unionid;
                    var sessionBag = SessionContainer.UpdateSession(null, jsonResult.openid, jsonResult.session_key, unionId);

                    //注意:生产环境下SessionKey属于敏感信息,不能进行传输!
                    //return Json(new { success = true, msg = "OK", sessionId = sessionBag.Key, sessionKey = sessionBag.SessionKey });

                    YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper();
                    //User user = userApp.GetUserByUnionId(unionId);
                    User user = userService.GetUserByOpenId("yuebon.openid.wxapplet", jsonResult.openid);
                    if (user == null)
                    {
                        UserInputDto userInput = new UserInputDto();
                        userInput.OpenId     = jsonResult.openid;
                        user.UnionId         = jsonResult.unionid;
                        userInput.OpenIdType = "yuebon.openid.wxapplet";
                        userInput.NickName   = "游客";
                        userInput.UnionId    = jsonResult.unionid;
                        result.Success       = userService.CreateUserByWxOpenId(userInput);
                    }
                    //针对老用户更新UnionId
                    if (user != null && string.IsNullOrEmpty(user.UnionId))
                    {
                        user.UnionId   = jsonResult.unionid;
                        result.Success = userService.Update(user, user.Id);
                    }
                    string userId = string.Empty;
                    if (result.ResData != null)
                    {
                        userId = result.ResData.ToString();
                    }
                    if (user == null)
                    {
                        user = userService.GetUserByOpenId("yuebon.openid.wxapplet", jsonResult.openid);
                    }

                    var currentSession = (YuebonCurrentUser)(yuebonCacheHelper.Get("login_user_" + userId));
                    if (currentSession == null || string.IsNullOrWhiteSpace(currentSession.AccessToken))
                    {
                        JwtOption     jwtModel      = App.GetService <JwtOption>();
                        TokenProvider tokenProvider = new TokenProvider(jwtModel);
                        TokenResult   tokenResult   = tokenProvider.LoginToken(user, "wxapplet");
                        currentSession = new YuebonCurrentUser
                        {
                            UserId         = user.Id,
                            Account        = user.Account,
                            Name           = user.RealName,
                            NickName       = user.NickName,
                            AccessToken    = tokenResult.AccessToken,
                            AppKey         = "wxapplet",
                            CreateTime     = DateTime.Now,
                            HeadIcon       = user.HeadIcon,
                            Gender         = user.Gender,
                            ReferralUserId = user.ReferralUserId,
                            MemberGradeId  = user.MemberGradeId,
                            Role           = roleService.GetRoleEnCode(user.RoleId),
                            MobilePhone    = user.MobilePhone,
                            WxSessionId    = sessionBag.Key
                        };
                        TimeSpan expiresSliding = DateTime.Now.AddMinutes(120) - DateTime.Now;
                        yuebonCacheHelper.Add("login_user_" + user.Id, currentSession, expiresSliding, true);
                    }
                    CurrentUser    = currentSession;
                    result.ResData = currentSession; //new AuthorizeApp().GetAccessedControls(user.Account);
                    result.ErrCode = ErrCode.successCode;
                    result.Success = true;
                }
                else
                {
                    result.ErrCode = ErrCode.failCode;
                    result.ErrMsg  = jsonResult.errmsg;
                }
            }
            catch (Exception ex)
            {
                result.ErrMsg = ex.Message;
            }

            return(ToJsonContent(result));
        }
Esempio n. 20
0
        public async Task <IActionResult> GetCheckUser(string username, string password, string vcode, string vkey, string appId, string systemCode)
        {
            CommonResult      result            = new CommonResult();
            RemoteIpParser    remoteIpParser    = new RemoteIpParser();
            string            strIp             = remoteIpParser.GetClientIp(HttpContext).MapToIPv4().ToString();
            YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper();
            var    vCode = yuebonCacheHelper.Get("ValidateCode" + vkey);
            string code  = vCode != null?vCode.ToString() : "11";

            if (vcode.ToUpper() != code)
            {
                result.ErrMsg = "验证码错误";
                return(ToJsonContent(result));
            }
            Log  logEntity = new Log();
            bool blIp      = _filterIPService.ValidateIP(strIp);

            if (blIp)
            {
                result.ErrMsg = strIp + "该IP已被管理员禁止登录!";
            }
            else
            {
                if (string.IsNullOrEmpty(username))
                {
                    result.ErrMsg = "用户名不能为空!";
                }
                else if (string.IsNullOrEmpty(password))
                {
                    result.ErrMsg = "密码不能为空!";
                }
                if (string.IsNullOrEmpty(systemCode))
                {
                    result.ErrMsg = ErrCode.err40006;
                }
                else
                {
                    string strHost = Request.Host.ToString();
                    APP    app     = _appService.GetAPP(appId);
                    if (app == null)
                    {
                        result.ErrCode = "40001";
                        result.ErrMsg  = ErrCode.err40001;
                    }
                    else
                    {
                        if (!app.RequestUrl.Contains(strHost, StringComparison.Ordinal) && !strHost.Contains("localhost", StringComparison.Ordinal))
                        {
                            result.ErrCode = "40002";
                            result.ErrMsg  = ErrCode.err40002 + ",你当前请求主机:" + strHost;
                        }
                        else
                        {
                            SystemType systemType = _systemTypeService.GetByCode(systemCode);
                            if (systemType == null)
                            {
                                result.ErrMsg = ErrCode.err40006;
                            }
                            else
                            {
                                Tuple <User, string> userLogin = await this._userService.Validate(username, password);

                                if (userLogin != null)
                                {
                                    string ipAddressName = IpAddressUtil.GetCityByIp(strIp);
                                    if (userLogin.Item1 != null)
                                    {
                                        result.Success = true;
                                        User              user           = userLogin.Item1;
                                        JwtOption         jwtModel       = App.GetService <JwtOption>();
                                        TokenProvider     tokenProvider  = new TokenProvider(jwtModel);
                                        TokenResult       tokenResult    = tokenProvider.LoginToken(user, appId);
                                        YuebonCurrentUser currentSession = new YuebonCurrentUser
                                        {
                                            UserId         = user.Id,
                                            Name           = user.RealName,
                                            AccessToken    = tokenResult.AccessToken,
                                            AppKey         = appId,
                                            CreateTime     = DateTime.Now,
                                            Role           = _roleService.GetRoleEnCode(user.RoleId),
                                            ActiveSystemId = systemType.Id,
                                            CurrentLoginIP = strIp,
                                            IPAddressName  = ipAddressName
                                        };
                                        TimeSpan expiresSliding = DateTime.Now.AddMinutes(120) - DateTime.Now;
                                        yuebonCacheHelper.Add("login_user_" + user.Id, currentSession, expiresSliding, true);

                                        List <AllowCacheApp> list = yuebonCacheHelper.Get("AllowAppId").ToJson().ToList <AllowCacheApp>();
                                        if (list.Count == 0)
                                        {
                                            IEnumerable <APP> appList = _appService.GetAllByIsNotDeleteAndEnabledMark();
                                            yuebonCacheHelper.Add("AllowAppId", appList);
                                        }
                                        CurrentUser    = currentSession;
                                        result.ResData = currentSession;
                                        result.ErrCode = ErrCode.successCode;
                                        result.Success = true;

                                        logEntity.Account       = user.Account;
                                        logEntity.NickName      = user.NickName;
                                        logEntity.Date          = logEntity.CreatorTime = DateTime.Now;
                                        logEntity.IPAddress     = CurrentUser.CurrentLoginIP;
                                        logEntity.IPAddressName = CurrentUser.IPAddressName;
                                        logEntity.Result        = true;
                                        logEntity.ModuleName    = "登录";
                                        logEntity.Description   = "登录成功";
                                        logEntity.Type          = "Login";
                                        _logService.Insert(logEntity);
                                    }
                                    else
                                    {
                                        result.ErrCode          = ErrCode.failCode;
                                        result.ErrMsg           = userLogin.Item2;
                                        logEntity.Account       = username;
                                        logEntity.Date          = logEntity.CreatorTime = DateTime.Now;
                                        logEntity.IPAddress     = strIp;
                                        logEntity.IPAddressName = ipAddressName;
                                        logEntity.Result        = false;
                                        logEntity.ModuleName    = "登录";
                                        logEntity.Type          = "Login";
                                        logEntity.Description   = "登录失败," + userLogin.Item2;
                                        _logService.Insert(logEntity);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            yuebonCacheHelper.Remove("LoginValidateCode");
            return(ToJsonContent(result, true));
        }
Esempio n. 21
0
        public IActionResult QuikLogin(WxUserInfo info)
        {
            CommonResult result = new CommonResult();

            try
            {
                if (info != null)
                {
                    DecodedUserInfo decodedUserInfo = EncryptHelper.DecodeUserInfoBySessionId(info.SessionId, info.EncryptedData, info.Iv);

                    UserInputDto userInput = new UserInputDto();
                    userInput.NickName       = decodedUserInfo.nickName;
                    userInput.HeadIcon       = decodedUserInfo.avatarUrl;
                    userInput.Gender         = decodedUserInfo.gender;
                    userInput.Country        = decodedUserInfo.country;
                    userInput.Province       = decodedUserInfo.province;
                    userInput.City           = decodedUserInfo.city;
                    userInput.language       = info.language;
                    userInput.OpenId         = decodedUserInfo.openId;
                    userInput.OpenIdType     = "yuebon.openid.wxapplet";
                    userInput.ReferralUserId = info.ReferralUserId;
                    userInput.UnionId        = decodedUserInfo.unionId;
                    User user = userService.GetUserByOpenId(userInput.OpenIdType, decodedUserInfo.openId);
                    if (user == null)
                    {
                        result.Success = userService.CreateUserByWxOpenId(userInput);
                    }
                    else
                    {
                        result.Success = userService.UpdateUserByOpenId(userInput);
                    }
                    user = userService.GetUserByOpenId(info.openIdType, info.openId);
                    if (user != null)
                    {
                        JwtOption     jwtModel       = App.GetService <JwtOption>();
                        TokenProvider tokenProvider  = new TokenProvider(jwtModel);
                        TokenResult   tokenResult    = tokenProvider.LoginToken(user, "wxapplet");
                        var           currentSession = new YuebonCurrentUser
                        {
                            UserId         = user.Id,
                            Account        = user.Account,
                            Name           = user.RealName,
                            NickName       = user.NickName,
                            AccessToken    = tokenResult.AccessToken,
                            AppKey         = "wxapplet",
                            CreateTime     = DateTime.Now,
                            HeadIcon       = user.HeadIcon,
                            Gender         = user.Gender,
                            ReferralUserId = user.ReferralUserId,
                            MemberGradeId  = user.MemberGradeId,
                            Role           = roleService.GetRoleEnCode(user.RoleId)
                        };

                        CurrentUser = currentSession;
                        YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper();
                        TimeSpan          expiresSliding    = DateTime.Now.AddMinutes(120) - DateTime.Now;
                        yuebonCacheHelper.Add("login_user_" + user.Id, currentSession, expiresSliding, true);
                        result.ErrCode = ErrCode.successCode;
                        result.ResData = currentSession;
                        result.Success = true;
                    }
                    else
                    {
                        result.ErrCode = ErrCode.failCode;
                    }
                }
            }catch (Exception ex)
            {
                Log4NetHelper.Error("微信快速(一键)登录异常", ex);
                result.ErrMsg  = "微信快速(一键)登录:" + ex.Message;
                result.ErrCode = ErrCode.failCode;
            }
            return(ToJsonContent(result));
        }