Beispiel #1
0
        /// <summary>
        /// Get collection of int.
        /// </summary>
        /// <param name="context">request context</param>
        /// <param name="key">params key</param>
        /// <param name="separator">split char</param>
        /// <returns></returns>
        public static List <int> GetListIntFromParameters(this HttpContext context, string key, char separator)
        {
            var strList = context.GetStringFromParameters(key);

            if (string.IsNullOrEmpty(strList))
            {
                return(null);
            }
            var list = new List <int>();

            foreach (var item in strList.Split(separator))
            {
                if (string.IsNullOrEmpty(item))
                {
                    continue;
                }
                var id = DataTypeConvertHelper.ToInt(item);
                if (list.Contains(id))
                {
                    continue;
                }
                list.Add(id);
            }
            return(list);
        }
Beispiel #2
0
        /// <summary>
        /// 创建数据库
        /// </summary>
        /// <returns></returns>
        public bool CreateSqliteDb()
        {
            if (!File.Exists(_filePath))
            {
                SQLiteConnection.CreateFile(_filePath);
            }
            var connection = new SQLiteConnection(ConnectionString);

            using (connection)
            {
                connection.Open();
                var tableCount = connection.ExecuteScalar(
                    " SELECT COUNT(*) FROM sqlite_master where type='table' and name='DataBaseLinkConfigModel' ");
                if (DataTypeConvertHelper.ToInt(tableCount) == 1)
                {
                    return(true);
                }
                connection.Execute(@" CREATE TABLE DataBaseLinkConfigModel (
                                            Id  INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
                                            DbType  INTEGER,
                                            LinkName  TEXT,
                                            LinkConnectionString  TEXT,
                                            IsEnable INTEGER
                                            ); ");
            }
            return(true);
        }
Beispiel #3
0
        /// <summary>
        /// 方法执行前,如果没有登录就调整到Passport登录页面,没有权限就抛出信息
        /// </summary>
        /// <param name="filterContext"></param>
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            #region [1、验证是否在服务时间内]

            var startTimeStr = AppConfigurationHelper.GetString("SystemRunStartTime");
            var endTimeStr   = AppConfigurationHelper.GetString("SystemRunEndTime");
            //没有配置时间
            if (!string.IsNullOrEmpty(startTimeStr) && !string.IsNullOrEmpty(endTimeStr))
            {
                var startTime = DataTypeConvertHelper.ToDateTime(startTimeStr);
                var endTime   = DataTypeConvertHelper.ToDateTime(endTimeStr);

                if (startTime <= new DateTime(1900, 1, 1) || endTime <= new DateTime(1900, 1, 1))
                {
                    filterContext.Result = Request.UrlReferrer != null?Stop("系统运行时间配置错误!", Request.UrlReferrer.AbsoluteUri) : Content("系统运行时间配置错误!");

                    return;
                }
                startTime = new DateTime(1900, 1, 1, startTime.Hour, startTime.Minute, startTime.Second);
                endTime   = new DateTime(1900, 1, 1, endTime.Hour, endTime.Minute, endTime.Second);
                var newTime = DateTime.Now;
                newTime = new DateTime(1900, 1, 1, newTime.Hour, newTime.Minute, newTime.Second);
                if (newTime < startTime || newTime > endTime)
                {
                    filterContext.Result = Request.UrlReferrer != null?Stop("系统处于维护期!", Request.UrlReferrer.AbsoluteUri) : Content("系统处于维护期!");
                }
            }

            #endregion
        }
Beispiel #4
0
        /// <summary>
        /// GetKeys
        /// </summary>
        /// <param name="connectionString"></param>
        /// <param name="sqlCmd"></param>
        /// <returns></returns>
        private Columns GetKeys(string connectionString, string sqlCmd)
        {
            Columns columns = new Columns(5);

            SimpleCRUD.SetDialect(SimpleCRUD.Dialect.Oracle);
            using (var conn = SqlConnectionHelper.GetOpenConnection(connectionString))
            {
                var dr = conn.ExecuteReader(sqlCmd);
                while (dr.Read())
                {
                    string id           = dr.IsDBNull(3) ? string.Empty : dr.GetValue(3).ToString();
                    string displayName  = dr.IsDBNull(3) ? string.Empty : dr.GetValue(3).ToString();
                    string name         = dr.IsDBNull(3) ? string.Empty : dr.GetValue(3).ToString();
                    string dataType     = "";
                    string defaultValue = "";
                    string isNullable   = "Y";
                    string length       = "";
                    string identity     = string.Empty;
                    string comment      = "主键";

                    Column column = new Column(id, displayName, name, dataType, comment);
                    column.Length            = DataTypeConvertHelper.ToInt(length);
                    column.IsAutoIncremented = false;
                    column.IsNullable        = isNullable.Equals("Y");
                    column.DefaultValue      = defaultValue.ToEmpty();
                    column.DataType          = dataType;
                    column.OriginalName      = name;
                    columns.Add(id, column);
                }
                dr.Close();

                return(columns);
            }
        }
Beispiel #5
0
        /// <summary>
        /// GetColumns
        /// </summary>
        /// <param name="connectionString"></param>
        /// <param name="sqlCmd"></param>
        /// <returns></returns>
        private Columns GetColumns(string connectionString, string sqlCmd)
        {
            Columns         columns = new Columns(50);
            MySqlDataReader dr      = MySqlHelper.ExecuteReader(connectionString, sqlCmd);

            while (dr.Read())
            {
                string id          = dr.IsDBNull(2) ? string.Empty : dr.GetString(2);
                string displayName = dr.IsDBNull(2) ? string.Empty : dr.GetString(2);
                string name        = dr.IsDBNull(2) ? string.Empty : dr.GetString(2);
                string dataType    = dr.IsDBNull(3) ? string.Empty : dr.GetString(3);
                //string key = dr.IsDBNull(4) ? string.Empty : dr.GetString(4);
                string defaultValue = dr.IsDBNull(5) ? string.Empty : dr.GetString(5);
                string isNullable   = dr.IsDBNull(6) ? string.Empty : dr.GetString(6);
                string length       = dr.IsDBNull(7) ? string.Empty : dr.GetString(7);
                string identity     = dr.IsDBNull(8) ? string.Empty : dr.GetString(8);
                string comment      = dr.IsDBNull(9) ? string.Empty : dr.GetString(9);

                Column column = new Column(id, displayName, name, dataType, comment);
                column.Length            = DataTypeConvertHelper.ToInt(length);
                column.IsAutoIncremented = identity.Equals("auto_increment");
                column.IsNullable        = isNullable.Equals("YES");
                column.DefaultValue      = defaultValue.ToEmpty();
                column.DataType          = dataType;
                column.OriginalName      = name;
                columns.Add(id, column);
            }
            dr.Close();

            return(columns);
        }
Beispiel #6
0
        /// <summary>
        /// Get entity difference
        /// </summary>
        public void GetEntityDifference()
        {
            var one = new TestsTabelToListObject
            {
                Age     = 10,
                Name    = "k",
                Height  = 20.907,
                Right   = true,
                Sex     = Enum.EnumSex.Boy,
                YouLong = new TimeSpan(1, 1, 1, 5)
            };

            var two = new TestsTabelToListObject
            {
                Age     = 100,
                Name    = "k",
                Height  = 20.907,
                Right   = true,
                Sex     = Enum.EnumSex.Boy,
                YouLong = new TimeSpan(1, 1, 1, 5)
            };
            var differenceStr = DataTypeConvertHelper.GetEntityDifference(one, two);
            var resulte       = "Age:“10”==>“100”|";

            differenceStr.IsEqualTo(resulte);
        }
        public ActionResult GetStatisticalData(string startTime = null, string endTime = null, long costChannel = 0)
        {
            var resultMode = new ResponseBaseModel <dynamic>
            {
                ResultCode = ResponceCodeEnum.Fail,
                Message    = ""
            };
            var userId = CurrentModel.UserId;

            if (userId < 1)
            {
                resultMode.Message = "登录失效,请重新登录";
            }
            else
            {
                var beginTime = DataTypeConvertHelper.ToDateTime(startTime);
                var closeTime = DataTypeConvertHelper.ToDateTime(endTime);
                var server    = new CostContentService();
                var data      = server.GetStatisticsCanPay(userId, beginTime, closeTime, costChannel);
                resultMode.Data       = data;
                resultMode.ResultCode = ResponceCodeEnum.Success;
            }

            return(Json(resultMode, JsonRequestBehavior.AllowGet));
        }
Beispiel #8
0
        public void DataTableToExcelTest()
        {
            List <Model.TestsTabelToListObject> testList = new List <Model.TestsTabelToListObject>
            {
                new Model.TestsTabelToListObject
                {
                    Age      = 10,
                    Height   = 20.907,
                    Name     = "qinxianbo",
                    Right    = true,
                    Sex      = Enum.EnumSex.Boy,
                    YouLong  = new TimeSpan(1, 1, 1, 1),
                    BrityDay = new DateTime(2017, 2, 3)
                },
                new Model.TestsTabelToListObject
                {
                    Age      = 23,
                    Height   = 234.907,
                    Name     = "秦先波",
                    Right    = true,
                    Sex      = Enum.EnumSex.Boy,
                    YouLong  = new TimeSpan(1, 1, 1, 2),
                    BrityDay = new DateTime(1994, 4, 5)
                },
                new Model.TestsTabelToListObject
                {
                    Age      = 40,
                    Height   = 20.907,
                    Name     = "qinxianbo",
                    Right    = true,
                    Sex      = Enum.EnumSex.Boy,
                    YouLong  = new TimeSpan(1, 1, 1, 3),
                    BrityDay = new DateTime(2017, 2, 23)
                },
                new Model.TestsTabelToListObject
                {
                    Height   = 20.907,
                    Name     = "杨宏俊",
                    Right    = true,
                    Sex      = Enum.EnumSex.Grily,
                    YouLong  = new TimeSpan(1, 1, 1, 4),
                    BrityDay = new DateTime(1995, 6, 7)
                },
                new Model.TestsTabelToListObject
                {
                    Age     = 10,
                    Name    = "k",
                    Height  = 20.907,
                    Right   = true,
                    Sex     = Enum.EnumSex.Boy,
                    YouLong = new TimeSpan(1, 1, 1, 5)
                }
            };
            var table       = DataTypeConvertHelper.ToDataTable(testList);
            var filePath    = "..\\..\\TestUseFile\\DataTableToExcel.xlsx";
            var excelHelper = new NpoiHelper(filePath);
            var result      = excelHelper.DataTableToExcel(table, "sheet", true);

            (result - 1).IsEqualTo(testList.Count);
        }
Beispiel #9
0
        /// <summary>
        /// Chinese to Pinyin
        /// </summary>
        public void GetFullPinyinTest()
        {
            var testChinese = "秦先生";
            var testPinyin  = "QinXianSheng";
            var resulteInfo = DataTypeConvertHelper.GetFullPinyin(testChinese);

            resulteInfo.IsEqualTo(testPinyin);
            resulteInfo = DataTypeConvertHelper.GetEachFirstLetterPinyin(testChinese);
            resulteInfo.IsEqualTo("QXS");
        }
        /// <summary>
        /// 获取消费分类记录
        /// </summary>
        /// <param name="starTime"></param>
        /// <param name="endTime"></param>
        /// <param name="userIds"></param>
        /// <param name="inOrOut"></param>
        /// <param name="channelId"></param>
        /// <returns></returns>
        public Dictionary <int, decimal> GetStatisticsCostMonth(DateTime starTime, DateTime endTime, List <long> userIds, CostInOrOutEnum inOrOut, long channelId)
        {
            var select  = @"SELECT
	CostYear,CostMonth,
	sum( cost ) CostCount 
FROM 
	costcontent "    ;
            var groupby = " GROUP BY CostYear,CostMonth ORDER BY CostYear desc,CostMonth desc";

            var where = new StringBuilder("WHERE UserId in @UserIds and IsDel=@IsDel ");
            where.Append(" AND SpendType!=2 ");
            where.Append(" AND CostInOrOut = @CostInOrOut  ");
            if (starTime > new DateTime(1900, 1, 1))
            {
                where.Append(" and  CostTime>@StartTime  ");
            }

            if (endTime > new DateTime(1900, 1, 1))
            {
                where.Append(" and  CostTime<=@EndTime  ");
            }

            if (channelId > 0)
            {
                where.Append(" and  CostChannel=@CostChannel  ");
            }
            var param = new
            {
                UserIds     = userIds.ToArray(),
                CostInOrOut = inOrOut.GetHashCode(),
                StartTime   = starTime,
                EndTime     = endTime,
                CostChannel = channelId,
                IsDel       = FlagEnum.HadZore.GetHashCode()
            };
            var resultMap = new Dictionary <int, decimal>();

            using (var conn = SqlConnectionHelper.GetOpenConnection())
            {
                IEnumerable <dynamic> query = conn.Query(select + where + groupby, param);
                foreach (var rows in query)
                {
                    if (!(rows is IDictionary <string, object> fields))
                    {
                        continue;
                    }
                    var sum       = fields["CostCount"];
                    var costYear  = fields["CostYear"];
                    var costMonth = fields["CostMonth"];
                    resultMap.Add(DataTypeConvertHelper.ToInt(costYear) * 100 + DataTypeConvertHelper.ToInt(costMonth), DataTypeConvertHelper.ToDecimal(sum));
                }
            }

            return(resultMap);
        }
Beispiel #11
0
        /// <summary>
        /// DataTable to list
        /// </summary>
        public void ToListTest()
        {
            var    filePath       = "..\\..\\TestUseFile\\TestExport.xlsx";
            var    excelHelperTwo = new NpoiHelper(filePath);
            string message;
            var    tableTwo = excelHelperTwo.ExcelToDataTable(null, true, out message);
            List <PersonGattScheduleInfoDto> tableToList =
                DataTypeConvertHelper.ToList <PersonGattScheduleInfoDto>(tableTwo);

            tableTwo.Rows.Count.IsEqualTo(tableToList.Count);
        }
Beispiel #12
0
        /// <summary>
        /// number to Chinese
        /// </summary>
        public void ToChineseTest()
        {
            var number      = 1234567;
            var numberChine = "一百二十三万四千五百六十七";
            var numberOld   = "壹佰贰拾叁萬肆仟伍佰陆拾柒";
            var resulteInfo = DataTypeConvertHelper.ToChinese(number, false);

            resulteInfo.IsEqualTo(numberChine);
            resulteInfo = DataTypeConvertHelper.ToChinese(number, true);
            resulteInfo.IsEqualTo(numberOld);
        }
Beispiel #13
0
        /// <summary>
        /// To int
        /// </summary>
        public void ToIntTest()
        {
            var intNumber       = "90";
            var intNumberResult = DataTypeConvertHelper.ToInt(intNumber);

            intNumberResult.IsEqualTo(90);

            var strNoNumber         = "90你好";
            var convertNumberIsZero = DataTypeConvertHelper.ToInt(strNoNumber);

            convertNumberIsZero.IsEqualTo(0);
        }
Beispiel #14
0
        /// <summary>
        /// To int
        /// </summary>
        public void ToIntTest1()
        {
            var intNumber       = "90";
            var intNumberResult = DataTypeConvertHelper.ToInt(intNumber, 20);

            intNumberResult.IsEqualTo(90);

            var strNoNumber            = "90你好";
            var convertNumberIsDefault = DataTypeConvertHelper.ToInt(strNoNumber, 20);

            convertNumberIsDefault.IsEqualTo(20);
        }
Beispiel #15
0
        /// <summary>
        /// 获取菜单信息
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="authorityList"></param>
        /// <returns></returns>
        public List <SysMenuModel> GetMenuList(long userId, ref List <int> authorityList)
        {
            if (userId < 1)
            {
                return(null);
            }

            var sysUserMenus = new List <SysMenuModel>();

            using (var conn = SqlConnectionHelper.GetOpenConnection())
            {
                var userMenus = conn.GetList <Sysusermenu>(new { IsDel = FlagEnum.HadZore.GetHashCode(), UserId = userId })?.ToList();
                if (userMenus != null && userMenus.Any())
                {
                    sysUserMenus = conn.GetList <SysMenuModel>("where id in @Id and IsDel=@IsDel", new { Id = userMenus.Select(item => item.MenuId).ToArray(), IsDel = FlagEnum.HadZore.GetHashCode() })?.ToList();
                }
            }

            var resultMemuList = new List <SysMenuModel>();

            if (sysUserMenus != null && sysUserMenus.Any())
            {
                var ids         = sysUserMenus.Select(f => f.Id).ToList();
                var dictionMenu = sysUserMenus.ToDictionary(f => f.Id, f => f);
                foreach (var r in sysUserMenus)
                {
                    authorityList.Add(DataTypeConvertHelper.ToInt(r.MenuType));
                    if (r.ParentId < 1)
                    {
                        resultMemuList.Add(r);
                    }

                    else if (ids.Contains(r.ParentId))
                    {
                        if (dictionMenu[r.ParentId].SubMenuModel == null)
                        {
                            dictionMenu[r.ParentId].SubMenuModel = new List <SysMenuModel>();
                        }
                        dictionMenu[r.ParentId].SubMenuModel.Add(r);
                    }
                    else
                    {
                        resultMemuList.Add(r);
                    }
                }
            }
            return(resultMemuList);
        }
Beispiel #16
0
        /// <summary>
        /// list to datatable slowly
        /// </summary>
        public void ToDataTableSlowlyTest()
        {
            var    filePath       = "..\\..\\TestUseFile\\TestExportLessData.xlsx";
            var    excelHelperTwo = new NpoiHelper(filePath);
            string message;
            var    tableTwo = excelHelperTwo.ExcelToDataTable("sheet1", true, out message);
            List <PersonGattScheduleInfoDto> personGantScheduleInfoDtosList =
                DataTypeConvertHelper.ToList <PersonGattScheduleInfoDto>(tableTwo);
            var storgeTable = DataTypeConvertHelper.ToDataTable(personGantScheduleInfoDtosList);

            tableTwo.Rows.Count.IsEqualTo(storgeTable.Rows.Count);
            var i = 5;
            var j = 4;

            tableTwo.Rows[i][j].IsEqualTo(storgeTable.Rows[i][j]);
        }
        public ActionResult CustomerCommentListPage(FlagEnum hasDeal, string beginTime, string endTime, int pageIndex = 1, int pageSize = 10)
        {
            if (pageIndex < 1)
            {
                pageIndex = 1;
            }
            pageSize = pageSize < 1 ? PageSize : pageSize;
            var beginDateTime = DataTypeConvertHelper.ToDateTime(beginTime, new DateTime(1900, 1, 1));
            var endDateTime   = DataTypeConvertHelper.ToDateTime(endTime, new DateTime(1900, 1, 1));
            var server        = new CustomerCommentService();
            var dataList      = server.GetList(beginDateTime, endDateTime, hasDeal, pageIndex, pageSize, out var count);
            var resultMode    = new ResponseBaseModel <dynamic>
            {
                ResultCode = ResponceCodeEnum.Success,
                Message    = "响应成功",
                Data       = new { count, dataList }
            };

            return(Json(resultMode, JsonRequestBehavior.AllowGet));
        }
        /// <summary>
        /// 获取记录
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public T Get(TK id)
        {
            var typeKey = typeof(TK);

            if (typeKey == typeof(int) || typeKey == typeof(long) || typeKey == typeof(float) || typeKey == typeof(double) ||
                typeKey == typeof(short) || typeKey == typeof(byte) || typeKey == typeof(Int16))
            {
                if (DataTypeConvertHelper.ToLong(id, 0) < 1L)
                {
                    return(default(T));
                }
            }
            else if (typeKey == typeof(string) || typeKey == typeof(Guid))
            {
                if (string.IsNullOrEmpty(id.ToString()))
                {
                    return(default(T));
                }
            }
            using (var conn = SqlConnectionHelper.GetOpenConnection())
            {
                return(conn.Get <T>(id));
            }
        }
        /// <summary>
        /// 获取统计数据
        /// </summary>
        /// <param name="userIds"></param>
        /// <param name="spendType"></param>
        /// <param name="address"></param>
        /// <param name="costThing"></param>
        /// <param name="costType"></param>
        /// <param name="costchannel"></param>
        /// <param name="startTime"></param>
        /// <param name="endTime"></param>
        /// <returns></returns>
        public Dictionary <int, decimal> GetStatisticsCost(List <long> userIds, int spendType, string address, string costThing, int costType, long costchannel, DateTime startTime, DateTime endTime)
        {
            var select = "select CostInOrOut,sum(cost) Sum from costcontent ";

            var where = new StringBuilder(" where UserId in @UserIds and IsDel=@IsDel ");

            if (spendType != -1)
            {
                where.Append(" AND SpendType = @SpendType ");
            }
            if (costType != -1)
            {
                where.Append(" AND CostType = @CostType ");
            }

            if (costchannel != -1)
            {
                where.Append(" and CostChannel=@CostChannel ");
            }

            if (startTime > new DateTime(1900, 1, 1))
            {
                where.Append(" AND CostTime >= @StartTime ");
            }

            if (endTime > new DateTime(1900, 1, 1))
            {
                where.Append(" AND CostTime <= @EndTime ");
            }
            if (!string.IsNullOrEmpty(address))
            {
                where.Append(" AND CostAddress LIKE @CostAddress ");
            }

            if (!string.IsNullOrEmpty(costThing))
            {
                where.Append(" AND CostThing LIKE @CostThing ");
            }

            var groupby = " GROUP BY CostInOrOut ";
            var param   = new
            {
                UserIds     = userIds.ToArray(),
                SpendType   = spendType,
                CostType    = costType,
                CostChannel = costchannel,
                StartTime   = startTime,
                EndTime     = endTime,
                CostAddress = "%" + address + "%",
                CostThing   = "%" + costThing + "%",
                IsDel       = FlagEnum.HadZore.GetHashCode()
            };
            var result = new Dictionary <int, decimal>();

            using (var conn = SqlConnectionHelper.GetOpenConnection())
            {
                IEnumerable <dynamic> query = conn.Query(select + where + groupby, param);
                foreach (var rows in query)
                {
                    if (!(rows is IDictionary <string, object> fields))
                    {
                        continue;
                    }
                    var sum     = fields["Sum"];
                    var inOrOut = fields["CostInOrOut"];
                    result.Add(DataTypeConvertHelper.ToInt(inOrOut), DataTypeConvertHelper.ToDecimal(sum));
                }
            }

            return(result);
        }
Beispiel #20
0
        public ResponseBaseModel <WeChatAuthResponseModel> GetUserOpenId([FromBody] WeChatLoginInfo loginInfo)
        {
            var data = RedisCacheHelper.Get <WeChatAuthResponseModel>(RedisCacheKey.AuthInfoKey + loginInfo.code);

            if (data != null)
            {
                return(new ResponseBaseModel <WeChatAuthResponseModel> {
                    ResultCode = ResponceCodeEnum.Success, Message = "微信认证成功", Data = data
                });
            }

            var weChatCheck = new WeChatAppDecrypt(
                string.IsNullOrEmpty(loginInfo.sys)
                    ? AppConfigurationHelper.GetString("XcxAppID", "")
                    : AppConfigurationHelper.GetString("XcxAppID" + loginInfo.sys),
                string.IsNullOrEmpty(loginInfo.sys)
                    ? AppConfigurationHelper.GetString("XcxAppSecrect", "")
                    : AppConfigurationHelper.GetString("XcxAppSecrect" + loginInfo.sys, ""));
            var openIdAndSessionKeyModel = weChatCheck.DecodeOpenIdAndSessionKey(loginInfo);

            if (openIdAndSessionKeyModel == null)
            {
                return(new ResponseBaseModel <WeChatAuthResponseModel> {
                    ResultCode = ResponceCodeEnum.Fail, Message = "微信认证失败"
                });
            }
            var isValidData = weChatCheck.VaildateUserInfo(loginInfo, openIdAndSessionKeyModel);

            if (!isValidData)
            {
                return(new ResponseBaseModel <WeChatAuthResponseModel> {
                    ResultCode = ResponceCodeEnum.Fail, Message = "请求信息验签失败"
                });
            }
            var responseData = weChatCheck.Decrypt(loginInfo.encryptedData, loginInfo.iv, openIdAndSessionKeyModel.session_key);

            if (responseData == null)
            {
                return(new ResponseBaseModel <WeChatAuthResponseModel> {
                    ResultCode = ResponceCodeEnum.Fail, Message = "微信认证失败"
                });
            }
            var server            = new WechatAccountService();
            var searchOpenIdModel = server.GetByOpenId(responseData.openId);

            //TODO:新的访问者
            if (searchOpenIdModel == null)
            {
                var newModel = new WeChatAccountModel
                {
                    AvatarUrl     = responseData.avatarUrl,
                    CreateTime    = DateTime.Now,
                    Gender        = DataTypeConvertHelper.ToInt(responseData.gender, 1),
                    IsDel         = FlagEnum.HadZore.GetHashCode(),
                    NickName      = responseData.nickName,
                    OpenId        = responseData.openId,
                    Remarks       = "新访问用户",
                    FamilyCode    = "",
                    HadBindFamily = FlagEnum.HadZore
                };
                server.SaveModel(newModel);

                var newSysModel = new SysUser
                {
                    Birthday   = "1900-01-01 00:00:00",
                    CreateTime = DateTime.Now,
                    IsDel      = FlagEnum.HadZore,
                    CreateAuth = 1,
                    HeadUrl    = newModel.AvatarUrl,
                    Password   = AesHelper.AesEncrypt("123456"),
                    Sex        = EnumHelper.GetEnumByValue <SexEnum>(newModel.Gender),
                    UpdateAuth = 1,
                    UpdateTime = DateTime.Now,
                    UserType   = UserTypeEnum.Usually,
                    UserName   = Guid.NewGuid().ToString()
                };
                var accountService = new AccountService();
                var resultId       = accountService.InsertWeChatUserAndBind(newSysModel, newModel.OpenId);
                newModel.AccountId = resultId;
                searchOpenIdModel  = newModel;
            }
            //TODO:未绑定用户,自动注册绑定
            else if (searchOpenIdModel.AccountId < 1)
            {
                var newSysModel = new SysUser
                {
                    Birthday   = "1900-01-01 00:00:00",
                    CreateTime = DateTime.Now,
                    IsDel      = FlagEnum.HadZore,
                    CreateAuth = 1,
                    HeadUrl    = searchOpenIdModel.AvatarUrl,
                    Password   = AesHelper.AesEncrypt("123456"),
                    Sex        = EnumHelper.GetEnumByValue <SexEnum>(searchOpenIdModel.Gender),
                    UpdateAuth = 1,
                    UpdateTime = DateTime.Now,
                    UserType   = UserTypeEnum.Usually,
                    UserName   = Guid.NewGuid().ToString()
                };
                var accountService = new AccountService();
                var resultId       = accountService.InsertWeChatUserAndBind(newSysModel, searchOpenIdModel.OpenId);
                searchOpenIdModel.AccountId = resultId;
            }
            //TODO:更新用户的昵称,头像
            else
            {
                searchOpenIdModel.AvatarUrl  = responseData.avatarUrl;
                searchOpenIdModel.NickName   = responseData.nickName;
                searchOpenIdModel.UpDateTime = DateTime.Now;
                server.SaveModel(searchOpenIdModel);
            }

            //TODO:获取家庭成员信息
            var userIds = new List <long>();

            if (searchOpenIdModel.HadBindFamily == FlagEnum.HadOne &&
                !string.IsNullOrEmpty(searchOpenIdModel.FamilyCode))
            {
                var members = _familyServer.GetFamilyMembers(searchOpenIdModel.FamilyCode);
                if (members != null && members.Count > 0)
                {
                    userIds.AddRange(members.Select(f => f.UserId));
                }
            }

            var weChatMemberList = new List <WeChatAuthResponseModel>();

            if (userIds.Count > 0)
            {
                var weChatMembers = server.Get(userIds);
                if (weChatMembers != null && weChatMembers.Count > 0)
                {
                    weChatMemberList = weChatMembers.Select(f => new WeChatAuthResponseModel
                    {
                        AvatarUrl = f.AvatarUrl,
                        AccountId = f.AccountId,
                        NickName  = f.NickName
                    }).ToList();
                }
            }

            var resultModel = new WeChatAuthResponseModel
            {
                Token            = Guid.NewGuid().ToString(),
                CodeTimeSpan     = responseData.watermark?.timestamp,
                AvatarUrl        = responseData.avatarUrl,
                AccountId        = searchOpenIdModel.AccountId,
                NickName         = responseData.nickName,
                WechatMemberList = weChatMemberList
            };

            //TODO:记录Token信息
            RedisCacheHelper.AddSet(RedisCacheKey.AuthInfoKey + loginInfo.code, resultModel, DateTime.Now.AddHours(2));
            RedisCacheHelper.AddSet(RedisCacheKey.AuthTokenKey + resultModel.Token, searchOpenIdModel, DateTime.Now.AddHours(2));
            return(new ResponseBaseModel <WeChatAuthResponseModel> {
                ResultCode = ResponceCodeEnum.Success, Message = "微信认证成功", Data = resultModel
            });
        }
Beispiel #21
0
        /// <summary>
        /// 方法执行前,如果没有登录就调整到Passport登录页面,没有权限就抛出信息
        /// </summary>
        /// <param name="filterContext"></param>
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            #region [1、验证是否在服务时间内]

            var startTimeStr = AppConfigurationHelper.GetString("SystemRunStartTime");
            var endTimeStr   = AppConfigurationHelper.GetString("SystemRunEndTime");
            //没有配置时间
            if (!string.IsNullOrEmpty(startTimeStr) && !string.IsNullOrEmpty(endTimeStr))
            {
                var startTime = DataTypeConvertHelper.ToDateTime(startTimeStr);
                var endTime   = DataTypeConvertHelper.ToDateTime(endTimeStr);

                if (startTime <= new DateTime(1900, 1, 1) || endTime <= new DateTime(1900, 1, 1))
                {
                    filterContext.Result = Request.UrlReferrer != null?Stop("系统运行时间配置错误!", Request.UrlReferrer.AbsoluteUri) : Content("系统运行时间配置错误!");

                    return;
                }
                startTime = new DateTime(1900, 1, 1, startTime.Hour, startTime.Minute, startTime.Second);
                endTime   = new DateTime(1900, 1, 1, endTime.Hour, endTime.Minute, endTime.Second);
                var newTime = DateTime.Now;
                newTime = new DateTime(1900, 1, 1, newTime.Hour, newTime.Minute, newTime.Second);
                if (newTime < startTime || newTime > endTime)
                {
                    filterContext.Result = Request.UrlReferrer != null?Stop("系统处于维护期!", Request.UrlReferrer.AbsoluteUri) : Content("系统处于维护期!");

                    return;
                }
            }

            #endregion
            var noAuthorizeAttributes = filterContext.ActionDescriptor.GetCustomAttributes(typeof(AuthorizeIgnoreAttribute), false);
            if (noAuthorizeAttributes.Length > 0)
            {
                return;
            }

            base.OnActionExecuting(filterContext);

            if (CurrentModel == null)
            {
                filterContext.Result = RedirectToAction("Login", "Auth");
                return;
            }

            var permissionAttributes = filterContext.ActionDescriptor.ControllerDescriptor.GetCustomAttributes(typeof(PermissionAttribute), false).Cast <PermissionAttribute>();
            permissionAttributes = filterContext.ActionDescriptor.GetCustomAttributes(typeof(PermissionAttribute), false).Cast <PermissionAttribute>().Union(permissionAttributes);
            var attributes = permissionAttributes as IList <PermissionAttribute> ?? permissionAttributes.ToList();
            var showBanner = string.Empty;
            if (attributes.Any())
            {
                var hasPermission = true;
                foreach (var attr in attributes)
                {
                    foreach (var permission in attr.Permissions)
                    {
                        if (!CurrentModel.BusinessPermissionList.Contains(permission))
                        {
                            hasPermission = false;
                            break;
                        }
                    }
                }

                if (!hasPermission)
                {
                    if (Request.UrlReferrer != null)
                    {
                        filterContext.Result = Stop("没有权限!", Request.UrlReferrer.AbsoluteUri);
                    }
                    else
                    {
                        filterContext.Result = Content("没有权限!");
                    }
                }
                if (attributes.Count > 1)
                {
                    MenuId      = attributes[0].Permissions.FirstOrDefault().GetHashCode();
                    ManagerId   = attributes[1].Permissions.FirstOrDefault().GetHashCode();
                    showBanner  = EnumHelper.GetDescriptionByEnum(attributes[1].Permissions.FirstOrDefault());
                    showBanner += "/" + EnumHelper.GetDescriptionByEnum(attributes[0].Permissions.FirstOrDefault());
                }
                else
                {
                    ManagerId  = attributes[0].Permissions.FirstOrDefault().GetHashCode();
                    showBanner = EnumHelper.GetDescriptionByEnum(attributes[0].Permissions.FirstOrDefault());
                }
            }
            ViewBag.ShowBanner = showBanner;
            ViewBag.ManagerId  = ManagerId;
            ViewBag.MenuId     = MenuId;
        }