private void CreateOrUpdateMenu(IPersistBroker broker, classification data) { var menu = broker.Retrieve <sys_menu>("SELECT * FROM sys_menu WHERE router = @code", new Dictionary <string, object>() { { "@code", $"blogs/{data.code}" } }); if (menu != null) { menu.menu_Index = data.index; menu.name = data.name; broker.Update(menu); } else { menu = new sys_menu() { Id = Guid.NewGuid().ToString(), name = data.name, parentid = "8201EFED-76E2-4CD1-A522-4803D52D4D92", parentIdName = "博客管理", router = $"blogs/{data.code}", menu_Index = data.index, stateCode = 1, stateCodeName = "启用" }; broker.Create(menu); } }
/// <summary> /// 权限创建 /// </summary> /// <param name="broker"></param> /// <param name="entity"></param> /// <returns></returns> public static string FilteredCreate(this IPersistBroker broker, BaseEntity entity) { var sysEntity = EntityCache.GetEntity(entity.EntityName); AssertUtil.CheckBoolean <InvalidCredentialException>(!AuthAccess.CheckWriteAccess(sysEntity.Id), $"用户没有实体[{sysEntity.name}]的创建权限", "451FC4BA-46B2-4838-B8D0-69617DFCAF39"); return(broker.Create(entity)); }
/// <summary> /// 获取配置值 /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public static object GetValue <T>() where T : ISysConfig, new() { var sql = @" select * from sys_config where code = @code; "; var t = new T(); var data = broker.Retrieve <sys_config>(sql, new Dictionary <string, object>() { { "@code", t.Code } }); // 数据库里不存在该配置,则创建一条配置记录 if (data == null) { var model = new sys_config() { name = t.Name, code = t.Code, value = t.DefaultValue?.ToString() }; broker.Create(model); return(t.DefaultValue); } return(data.value); }
/// <summary> /// 注册 /// </summary> /// <param name="model"></param> /// <returns></returns> public LoginResponse Signup(LoginRequest model) { AssertUtil.CheckIsNullOrEmpty <SpException>(model.code, "账号不能为空", ""); AssertUtil.CheckIsNullOrEmpty <SpException>(model.password, "密码不能为空", ""); return(Broker.ExecuteTransaction(() => { if (!model.code.Contains("@")) { return new LoginResponse(false, "注册失败,请使用邮箱作为账号"); } var vertification = new MailVertificationService(Broker).GetDataByMailAdress(model.code); if (vertification != null) { return new LoginResponse(false, "激活邮件已发送,请前往邮件激活账号,请勿重复注册", LoginMesageLevel.Warning); } var id = Guid.NewGuid().ToString(); model.password = RSAUtil.Decrypt(model.password, model.publicKey); var data = new mail_vertification() { Id = id, name = "账号激活邮件", content = $@"你好,<br/><br/> 请在两小时内点击该<a href=""{ SystemConfig.Config.Protocol }://{SystemConfig.Config.Domain}/api/MailVertification/ActivateUser?id={id}"">链接</a>激活,失效请重新登录注册 ", expire_time = DateTime.Now.AddHours(2), is_active = false, login_request = JsonConvert.SerializeObject(model), mail_address = model.code, mail_type = MailType.Activation.ToString() }; Broker.Create(data); // 返回登录结果、用户信息、用户验证票据信息 return new LoginResponse() { result = false, message = $"已向{data.mail_address}发送激活邮件,请在两个小时内激活", level = LoginMesageLevel.Warning.ToString() }; })); }
/// <summary> /// 获取角色 /// </summary> /// <param name="roleName"></param> /// <returns></returns> public sys_role GetSysRole() { var key = $"{ROLE_PREFIX}_{RoleName}"; return(MemoryCacheUtil.GetOrAddCacheItem(key, () => { var role = Broker.Retrieve <sys_role>("select * from sys_role where name = @name", new Dictionary <string, object>() { { "@name", Role.GetDescription() } }); if (role == null) { role = new sys_role() { Id = Guid.NewGuid().ToString(), name = Role.GetDescription(), is_basic = true }; Broker.Create(role); } return role; }, DateTime.Now.AddHours(12))); }