public IActionResult PostUser([FromBody] JObject data) { CheckDataSourceParameter(); var valid = SqlMap.Params.GetValue("validmobile", false); var mobile = ValidMobile(data, valid); var loginName = data.GetValue <string>("loginname"); if (loginName.HasValue() && userService.GetByLoginName(loginName) != null) { throw new AceException("用户名 [" + loginName + "] 已经使用"); } var user = new Rbac_User(); user.InitializeId(); user.DCreate = DateTime.Now; user.Enabled = data.GetValue("enable", 1) == 1; user.UserType = (UserType)data.GetValue <int>("usertype", 0); user.LoginName = loginName; user.UserName = data.GetValue <string>("username"); user.NickName = data.GetValue("nickname", mobile); user.Password = CryptoHelper.ComputeMD5(user.HashId, data["password"].Value <string>()); user.Photo = data.GetValue <string>("photo"); user.Mobile = mobile; user.Mail = data.GetValue <string>("mail"); user.Remark = data.GetValue <string>("remark"); user.Creator = data.GetValue("creator", SqlMap.Params.GetValue("creator", AppCtx.AC.User.Id.ToString())); //user.System = data.GetValue("system", 0) == 1; user.RegType = (RegType)data.GetValue("regtype", 9); user.Client_Id = data.GetValue <long?>("clientid"); AppCtx.Session.BeginTransaction(); try { var refcode = data.GetValue("refcode", ""); var refname = data.GetValue("refname", ""); var checkInsertSql = SqlMap.Params.GetValue("checkinsertsql", ""); var checkInsertError = SqlMap.Params.GetValue("checkinserterror", ""); if (checkInsertSql.HasValue()) { var result = AppCtx.Session.QueryFirst(checkInsertSql, new { refid = data.GetValue("refid", App.IdWorker.NextId()), refcode, refname }); if (result.cnt > 0) { throw new AceException(checkInsertError.FormatWith(refcode, refname)); } refcode = result.refcode.ToString(); } else if (checkInsertError.HasValue() && userService.GetByRefCode(refcode) != null) { throw new AceException(checkInsertError.FormatWith(refcode, refname)); } user.RefCode = refcode; if (App.GetQuery("scale", 0) == 1) { var refId = data.GetValue <string>("ref_id"); var scale = scaleService.GetByRef(refId); if (scale == null) { scale = new Rbac_Scale(); scale.InitializeId(); scale.DCreate = DateTime.Now; scale.Name = data.GetValue("scale_name", user.UserName); if (refId.HasValue()) { scale.Ref_Id = refId; } scale.ParentId = AppCtx.AC.User.Scale_Id; scale.Remark = "由用户 [" + user.LoginName + "] 自动生成"; scaleService.Insert(scale); } user.Scale_Id = scale.Id; user.UserType = UserType.Admin; } else { user.Scale_Id = data.GetValue("scale_id", AppCtx.AC.GetDefaultScaleId()); } userService.Insert(user); var roles = SqlMap.Params.GetValue("roles", ""); if (roles.HasValue()) { roles.Split <long>().Each(roleId => { var ua = new Rbac_UA(); ua.InitializeId(); ua.User_Id = user.Id; ua.Role_Id = roleId; ua.DCreate = DateTime.Now; AppCtx.Session.Insert(ua); }); } AppCtx.Session.Commit(); if (SqlMap.SqlId != "rbac.user") { SqlMapper.CacheManager.Flush(SqlMap.SqlId); } SqlMapper.CacheManager.Flush("rbac.user"); } catch (Exception ex) { AppCtx.Session.Rollback(); throw new AceException(ex.GetMessage()); } return(Ok(null)); }
public void InitializeData(ISession session) { session.BeginTransaction(); try { var rootScale = new Rbac_Scale(); rootScale.InitializeId(); rootScale.Name = "root"; rootScale.Remark = "系统顶级,默认请勿删除"; rootScale.System = true; rootScale.DCreate = DateTime.Now; session.Insert(rootScale); var adminScale = new Rbac_Scale(); adminScale.Id = Membership.Default_ScaleId; adminScale.ParentId = rootScale.Id; adminScale.Name = "admin"; adminScale.Remark = "管理员级,最高权限层级"; adminScale.System = true; adminScale.DCreate = DateTime.Now; session.Insert(adminScale); var roleAdmin = new Rbac_Role(); roleAdmin.InitializeId(); roleAdmin.Name = "系统管理员"; roleAdmin.Scale_Id = rootScale.Id; roleAdmin.System = true; roleAdmin.DCreate = DateTime.Now; session.Insert(roleAdmin); var roleGuest = new Rbac_Role(); roleGuest.InitializeId(); roleGuest.Name = "游客角色"; roleGuest.Scale_Id = rootScale.Id; roleGuest.System = true; roleGuest.DCreate = DateTime.Now; session.Insert(roleGuest); var root = new Rbac_User(); root.InitializeId(); root.Scale_Id = rootScale.Id; root.LoginName = "root"; root.UserName = "******"; root.NickName = "管理员"; root.Password = CryptoHelper.ComputeMD5(root.HashId, "root&123"); root.DCreate = DateTime.Now; root.Enabled = true; session.Insert(root); var admin = new Rbac_User(); admin.InitializeId(); admin.Scale_Id = adminScale.Id; admin.LoginName = "admin"; admin.UserName = "******"; admin.NickName = "管理员"; admin.UserType = UserType.Admin; admin.Creator = root.Id.ToString(); admin.Password = CryptoHelper.ComputeMD5(admin.HashId, "admin"); admin.DCreate = DateTime.Now; admin.Enabled = true; session.Insert(admin); var guest = new Rbac_User(); guest.InitializeId(); guest.Scale_Id = rootScale.Id; guest.LoginName = "guest"; guest.UserName = "******"; guest.NickName = "游客"; guest.Creator = root.Id.ToString(); guest.Password = CryptoHelper.ComputeMD5(guest.HashId, "guest"); guest.DCreate = DateTime.Now; guest.Enabled = true; session.Insert(guest); var ua = new Rbac_UA(); ua.InitializeId(); ua.Role_Id = roleAdmin.Id; ua.User_Id = admin.Id; ua.DCreate = DateTime.Now; session.Insert(ua); ua = new Rbac_UA(); ua.InitializeId(); ua.Role_Id = roleGuest.Id; ua.User_Id = guest.Id; ua.DCreate = DateTime.Now; session.Insert(ua); session.Commit(); } catch { session.Rollback(); throw; } }