Exemple #1
0
        public async Task <MessageModel <SysUserVM> > GetInfoByToken(string token)
        {
            var data = MessageModel <SysUserVM> .Fail();

            if (!string.IsNullOrEmpty(token))
            {
                var tokenModel = JwtHelper.SerializeJwt(token);
                //if (tokenModel != null && tokenModel.Uid > 0)
                if (tokenModel != null && !string.IsNullOrWhiteSpace(tokenModel.Uid))
                {
                    var sysUserInfo = await _sysUserServices.QueryById(tokenModel.Uid);

                    if (sysUserInfo != null)
                    {
                        //转换
                        //将数据转化为T
                        var source = new Source <SysUser> {
                            Value = sysUserInfo
                        };
                        var t = _mapper.Map <Destination <SysUserVM> >(source);

                        data = MessageModel <SysUserVM> .Success(t.Value);

                        return(data);
                    }
                }
            }

            return(data);
        }
Exemple #2
0
        /// <summary>
        /// 获取角色对应菜单的权限
        /// </summary>
        /// <param name="roleId">角色ID</param>
        /// <returns></returns>
        public async Task <MessageModel <List <SysRoleMenuPowerGVM> > > GetRoleMenuPowerG(string roleId)
        {
            if (string.IsNullOrWhiteSpace(roleId))
            {
                return(MessageModel <List <SysRoleMenuPowerGVM> > .Fail("未传入角色ID"));
            }

            //查询角色是否存在
            var sysRole = await _sysRoleRepository.QueryById(roleId);

            if (sysRole != null && sysRole.Status == 1)
            {
                //查询角色对应菜单的权限组
                var sysRoleMenuPowerGs = await _dal.Query(m => m.RoleID == roleId && m.Status == 1);

                //将 SysRoleMenuPowerG  转为 sysRoleMenuPowerGVM
                var source = new Source <List <SysRoleMenuPowerGroup> > {
                    Value = sysRoleMenuPowerGs
                };
                var t = _mapper.Map <Destination <List <SysRoleMenuPowerGVM> > >(source);
                var returnSysRoleMenuPowerGroupVM = t.Value;

                return(MessageModel <List <SysRoleMenuPowerGVM> > .Success(returnSysRoleMenuPowerGroupVM));
            }
            else
            {
                return(MessageModel <List <SysRoleMenuPowerGVM> > .Fail("菜单已不存在"));
            }
        }
        public async Task <MessageModel <WeChatApiDto> > GetToken(string publicAccount)
        {
            var config = await this.QueryById(publicAccount);

            if (config == null)
            {
                MessageModel <string> .Success($"公众号{publicAccount}未维护至系统");              //还没过期,直接返回
            }
            if (config.tokenExpiration > DateTime.Now)
            {
                //再次判断token在微信服务器是否正确
                var wechatIP = await WeChatHelper.GetWechatIP(config.token);

                if (wechatIP.errcode == 0)
                {
                    MessageModel <WeChatApiDto> .Success("", new WeChatApiDto { access_token = config.token });//还没过期,直接返回
                }
            }
            //过期了,重新获取
            var data = await WeChatHelper.GetToken(config.appid, config.appsecret);

            if (data.errcode.Equals(0))
            {
                config.token           = data.access_token;
                config.tokenExpiration = DateTime.Now.AddSeconds(data.expires_in);
                await this.Update(config);

                return(MessageModel <WeChatApiDto> .Success("", data));
            }
            else
            {
                return(MessageModel <WeChatApiDto> .Fail($"\r\n获取Token失败\r\n错误代码:{data.errcode}\r\n错误信息:{data.errmsg}"));
            }
        }
Exemple #4
0
        public override async Task <MessageModel <bool> > DeleteOne(string ID)
        {
            MessageModel <bool> messageModel = MessageModel <bool> .Fail();

            //删除前验证
            //base.DelOnExecute = async (TestOrder modelExecute) =>
            //{
            //    //查询是否有该角色
            //    List<TestOrder> testOrders = await _dal.Query(x => x.ID.Equals(modelExecute.ID) && x.Status == Model.StatusE.Live);

            //    if (testOrders != null && testOrders.Count > 0)
            //    {

            //    }
            //    else
            //    {
            //        return MessageModel<bool>.Fail("不存在该订单");
            //    }

            //    ////查询是否有用户有该对应的角色
            //    //List<TestOrder> sysUsers = await _sysUserRepository.Query(x => x.Status == Model.StatusE.Live && x.RoleId == modelExecute.RoleID);

            //    //if (sysUsers != null && sysUsers.Count > 0)
            //    //{
            //    //    return MessageModel<bool>.Fail("有用户是该角色");
            //    //}

            //    return MessageModel<bool>.Success();
            //};

            return(await base.DeleteOne(ID));
        }
        public override async Task <MessageModel <bool> > DeleteOne(string ID)
        {
            MessageModel <bool> messageModel = MessageModel <bool> .Fail();

            //删除前验证
            base.DelOnExecute = async(SysRole modelExecute) =>
            {
                //查询是否有该角色
                List <SysRole> sysRoles = await _dal.Query(x => x.RoleID.Equals(modelExecute.RoleID) && x.Status == 1);

                if (sysRoles != null && sysRoles.Count > 0)
                {
                }
                else
                {
                    return(MessageModel <bool> .Fail("不存在该角色"));
                }

                //查询是否有用户有该对应的角色
                List <SysUser> sysUsers = await _sysUserRepository.Query(x => x.Status == 1 && x.RoleId == modelExecute.RoleID);

                if (sysUsers != null && sysUsers.Count > 0)
                {
                    return(MessageModel <bool> .Fail("有用户是该角色"));
                }

                return(MessageModel <bool> .Success());
            };

            return(await base.DeleteOne(ID));
        }
Exemple #6
0
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            //判断权限
            // if (context.HttpContext.User.Identity.IsAuthenticated)
            //{
            //var roleType = int.Parse(context.HttpContext.User.Claims.First(c => c.Type == "roleType").Value);
            ////不是管理人员
            //if (roleType <= 0 || roleType >= 4)
            //{
            //    context.Result = new JsonResult(new Result(214));
            //}



            //校验数据
            if (context.ModelState.IsValid == false)
            {
                var result = MessageModel <bool> .Fail(context.ModelState.GetAllErrMsgStr(","), ResponseEnum.ServerRequestError);

                //result.message = actionContext.ModelState.GetAllErrMsgStr(",");
                //actionContext.Response = new HttpResponseMessage { Content = new StringContent(JsonConvert.SerializeObject(result), Encoding.GetEncoding("UTF-8"), "application/json") };

                //context.Result = new HttpResponseMessage { Content = new StringContent(JsonConvert.SerializeObject(result), Encoding.GetEncoding("UTF-8"), "application/json") };
                context.Result = new JsonResult(result);
            }

            //}
            //else
            //    context.Result = new JsonResult(new Result(214));
        }
Exemple #7
0
        public async Task <MessageModel> Login(string Name, string pass)
        {
            var model = await _userver.GetModelAsync(m => m.Name.Equals(Name));

            if (model == null)
            {
                return(MessageModel.Fail(ref _msg, "没有找到用户!"));
            }

            if (model.pwd != MD5Helper.MD5Encrypt32(pass))
            {
                return(MessageModel.Fail(ref _msg, "用户密码输入错误!"));
            }

            var rolem = await _roleserver.GetModelAsync(a => a.userId == model.Id);

            if (rolem != null)
            {
                TokenModelJwt tokenModel = new TokenModelJwt
                {
                    Name = model.Name,
                    Uid  = model.Id,
                    Role = rolem.RoleName
                };
                _msg.Response = JwtHelper.IssueJwt(tokenModel);
            }
            return(MessageModel.Ok(ref _msg, "请求成功!"));
        }
        /// <summary>
        /// 获取用户的菜单
        /// </summary>
        /// <param name="uid"></param>
        /// <returns></returns>
        public async Task <MessageModel <SysMenuTreeVM> > GetUserMenuTree(string uid)
        {
            //判断当前用户
            var sysUser = await _sysUserRepository.QueryById(uid);

            if (sysUser == null)
            {
                return(MessageModel <SysMenuTreeVM> .Fail("不存在该用户"));
            }

            //查找对应用户的
            //先用全部凑合
            return(await GetMenuTree());
        }
        public async Task <MessageModel <SysMenuTreeVM> > GetUserMenuTree(string token)
        {
            var data = MessageModel <SysMenuTreeVM> .Fail();

            if (!string.IsNullOrEmpty(token))
            {
                var tokenModel = JwtHelper.SerializeJwt(token);
                if (tokenModel != null && !string.IsNullOrWhiteSpace(tokenModel.Uid))
                {
                    return(await _sysMenuServices.GetUserMenuTree(tokenModel.Uid));
                }
            }

            return(data);
        }
Exemple #10
0
        public override async Task <MessageModel <bool> > AddOne(TestOrderDetail saveModel)
        {
            MessageModel <int> messageModel = MessageModel <int> .Fail();

            //新增前验证
            //base.AddOnExecute = async (TestOrder save) =>
            //{
            //    List<TestOrder> testOrders = await _dal.Query(x => x.OrderNo.Equals(save.OrderNo));
            //    if (testOrders != null && testOrders.Count > 0)
            //    {
            //        return MessageModel<int>.Fail("已经存在该订单");
            //    }

            //    return MessageModel<int>.Success();
            //};

            return(await base.AddOne(saveModel));
        }
Exemple #11
0
        public override async Task <MessageModel <bool> > AddOne(TestOrder saveModel)
        {
            MessageModel <int> messageModel = MessageModel <int> .Fail();

            //新增前验证
            base.AddOnExecute = async(TestOrder save) =>
            {
                List <TestOrder> testOrders = await _dal.Query(x => x.OrderNo.Equals(save.OrderNo));

                if (testOrders != null && testOrders.Count > 0)
                {
                    return(MessageModel <bool> .Fail(false, "已经存在该订单"));
                }

                return(MessageModel <bool> .Success(true));
            };

            return(await base.AddOne(saveModel));
        }
Exemple #12
0
        public override async Task <MessageModel <bool> > AddOne(SysRole saveModel)
        {
            MessageModel <int> messageModel = MessageModel <int> .Fail();

            //新增前验证
            base.AddOnExecute = async(SysRole save) =>
            {
                List <SysRole> sysRoles = await _dal.Query(x => x.RoleID.Equals(save.RoleID));

                if (sysRoles != null && sysRoles.Count > 0)
                {
                    return(MessageModel <bool> .Fail(false, "已经存在该角色"));
                }

                return(MessageModel <bool> .Success(true));
            };

            return(await base.AddOne(saveModel));
        }
Exemple #13
0
        public override async Task <MessageModel <bool> > AddOne(SysMenu saveModel)
        {
            MessageModel <int> messageModel = MessageModel <int> .Fail();

            //新增前验证
            base.AddOnExecute = async(SysMenu save) =>
            {
                //List<SysMenu> sysMenus = await _dal.Query(x => x.MenuId.Equals(save.MenuId) && x.ParentId.Equals(save.ParentId) );
                List <SysMenu> sysMenus = await _dal.Query(x => x.MenuId.Equals(save.MenuId));

                if (sysMenus != null && sysMenus.Count > 0)
                {
                    return(MessageModel <bool> .Fail(false, "已经存在该菜单"));
                }

                return(MessageModel <bool> .Success(true));
            };

            return(await base.AddOne(saveModel));
        }
Exemple #14
0
        public override async Task <MessageModel <bool> > DeleteOne(string ID)
        {
            MessageModel <bool> messageModel = MessageModel <bool> .Fail();

            //删除前验证
            //base.DelOnExecute = async (TestOrderDetail modelExecute) =>
            //{
            //    //查询是否有该角色
            //    List<TestOrderDetail> testOrders = await _dal.Query(x => x.ID.Equals(modelExecute.ID) && x.Status == Model.StatusE.Live);

            //    if (testOrders != null && testOrders.Count > 0)
            //    {

            //    }
            //    else
            //    {
            //        return MessageModel<bool>.Fail("不存在该订单详情");
            //    }

            //    return MessageModel<bool>.Success();
            //};

            return(await base.DeleteOne(ID));
        }
Exemple #15
0
        /// <summary>
        /// 获取菜单权限   待优化代码
        /// </summary>
        /// <param name="menuId"></param>
        /// <returns></returns>
        public async Task <MessageModel <List <SysMenuPowerGroupVM> > > GetMenuPowerGroups(string menuId)
        {
            if (string.IsNullOrWhiteSpace(menuId))
            {
                return(MessageModel <List <SysMenuPowerGroupVM> > .Fail("未传入菜单ID"));
            }

            //查询菜单是否存在
            var sysMenu = await _sysMenuRepository.QueryById(menuId);

            if (sysMenu != null && sysMenu.Status != 2)
            {
                //查询菜单的权限组
                var sysMenuPowerGroups = await _dal.Query(d => d.SysMenuID == menuId && d.Status == 1);

                //var resultR=from sysMenuPowersG in sysMenuPowerGroups.sys


                var arrayPowerGroups = sysMenuPowerGroups.Select(s => s.SysPowerGroupID).ToArray();

                var sysPowers = await _sysPowerRepository.Query(d => (arrayPowerGroups).Contains(d.SysPowerGroupID) && d.Status == 1);

                var returnMenuPowerGroupsVM = new List <SysMenuPowerGroupVM>();
                foreach (var item in sysMenuPowerGroups)
                {
                    //var sysMenuPowerGroupVM = new SysMenuPowerGroupVM();

                    var sysMenuPowerGroupVM = new SysMenuPowerGroupVM()
                    {
                        ID     = item.ID,
                        Status = item.Status,

                        CreateID   = item.CreateID,
                        CreateTime = item.CreateTime,
                        Creator    = item.Creator,

                        SysMenuID       = item.SysMenuID,
                        SysPowerGroupID = item.SysPowerGroupID
                    };
                    //mapper 有错误,我也不知道为啥
                    //try
                    //{
                    //    var source = new Source<SysMenuPowerGroup> { Value = item };
                    //    var destination = _mapper.Map<Destination<SysMenuPowerGroupVM>>(source);
                    //    sysMenuPowerGroupVM = destination.Value;
                    //}
                    //catch (Exception ex)
                    //{

                    //    throw;
                    //}


                    //sysMenuPowerGroupVM.SysMenu = sysMenu;
                    sysMenuPowerGroupVM.SysPowers = sysPowers.Where(d => d.SysPowerGroupID == item.SysPowerGroupID).ToList();

                    sysMenuPowerGroupVM.SysPowerGroup = await _sysPowerGroupRepository.QueryById(item.SysPowerGroupID);

                    returnMenuPowerGroupsVM.Add(sysMenuPowerGroupVM);
                }

                return(MessageModel <List <SysMenuPowerGroupVM> > .Success(returnMenuPowerGroupsVM));
            }

            return(MessageModel <List <SysMenuPowerGroupVM> > .Fail("菜单已不存在"));
        }
Exemple #16
0
        /// <summary>
        /// 更新角色对应菜单权限
        /// </summary>
        /// <param name="sysRoleMenuPowerGVMs"></param>
        /// <returns></returns>
        public async Task <MessageModel <bool> > UpdateRoleMenuPowerGs(List <SysRoleMenuPowerGVM> sysRoleMenuPowerGVMs)
        {
            var roleID = sysRoleMenuPowerGVMs?.FirstOrDefault().RoleID;//找到对应的角色


            #region //条件判断      (先不考虑用抽象方法方法)
            var sysRole = await _sysRoleRepository.QueryById(roleID);

            if (sysRole == null || sysRole.Status == 2)
            {
                return(MessageModel <bool> .Fail("角色已不存在"));
            }

            #endregion

            #region //数据准备
            //因为后台数据库的数据都需要新增人
            sysRoleMenuPowerGVMs.ForEach(d => {
                d.ID         = Guid.NewGuid().ToString();
                d.CreateID   = _httpUser.ID;
                d.CreateTime = DateTime.Now;
                d.Creator    = _httpUser.Name;
            });
            #endregion

            #region //开启事务
            //Action 是封装一个方法,该方法不具有参数且不返回值。 https://docs.microsoft.com/zh-cn/dotnet/api/system.action?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev16.query%3FappId%3DDev16IDEF1%26l%3DZH-CN%26k%3Dk(System.Action);k(DevLang-csharp)%26rd%3Dtrue&view=netframework-4.8
            //Func<TResult> 委托  封装一个不具有参数但却返回 TResult 参数指定的类型值的方法。
            var tranResult = _dal.UseTran(async() =>
            {
                //查询到之前的角色 权限数据
                var sysRoleMenuPowerGs = await _dal.Query(m => m.RoleID == roleID && m.Status == 1);

                //删除之前对应的角色的权限数据
                await _dal.DeleteByIds(sysRoleMenuPowerGs.Select(d => d.ID).ToArray());


                //将 sysRoleMenuPowerGVM 转为 SysRoleMenuPowerG
                var source = new Source <List <SysRoleMenuPowerGVM> > {
                    Value = sysRoleMenuPowerGVMs
                };
                var t = _mapper.Map <Destination <List <SysRoleMenuPowerGroup> > >(source);
                var sysRoleMenuPowerGroupsU = t.Value;


                //新增对应的角色的菜单权限组
                try
                {
                    await _dal.Add(sysRoleMenuPowerGroupsU);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    throw;
                }
            });
            #endregion

            if (tranResult)
            {
                return(MessageModel <bool> .Success(true, "更新成功"));
            }

            return(MessageModel <bool> .Fail("事务出错,请重试"));
        }
Exemple #17
0
        /// <summary>
        /// 更新菜单权限
        /// </summary>
        /// <param name="sysMenuPowerGVMs"></param>
        /// <returns></returns>
        public async Task <MessageModel <bool> > UpdateMenuPowerGroups(List <SysMenuPowerGroupVM> sysMenuPowerGVMs)
        {
            var menuID = sysMenuPowerGVMs?.FirstOrDefault().SysMenuID;

            //判断对应的菜单是否存在
            var sysMenu = await _sysMenuRepository.QueryById(menuID);

            if (sysMenu == null || sysMenu.Status == 2)
            {
                return(MessageModel <bool> .Fail("菜单已不存在"));
            }


            //因为后台数据库的数据都需要新增人
            sysMenuPowerGVMs.ForEach(d => {
                d.ID = Guid.NewGuid().ToString();

                d.CreateID   = _httpUser.ID;
                d.CreateTime = DateTime.Now;
                d.Creator    = _httpUser.Name;

                d.SysPowerGroup.CreateID   = _httpUser.ID;
                d.SysPowerGroup.CreateTime = DateTime.Now;
                d.SysPowerGroup.Creator    = _httpUser.Name;

                d.SysPowers.ForEach(p => {
                    p.CreateID   = _httpUser.ID;
                    p.CreateTime = DateTime.Now;
                    p.Creator    = _httpUser.Name;
                });
            });


            //开启事务
            var tranResult = _dal.UseTran(async() =>
                                          //var tranResult = _dal.UseCatchTran(async () =>
            {
                //查找到对应的菜单-权限组
                var sysMenuPowerGroups = await _dal.Query(m => m.SysMenuID == sysMenu.ID && m.Status == 1);
                //删除对应菜单的权限组  (menuPowerGroup)
                await _dal.DeleteByIds(sysMenuPowerGroups.Select(d => d.ID).ToArray());

                //查询权限组(powerGroup)  且删除
                await _sysPowerGroupRepository.DeleteByIds(sysMenuPowerGroups.Select(d => d.SysPowerGroupID).ToArray());

                //查询对应的权限组对应的权限 且删除
                var ss = sysMenuPowerGroups.Select(d => d.SysPowerGroupID).ToArray();
                //var p = await _sysPowerRepository.Query(
                //                                        m => (sysMenuPowerGroups.Select(d => d.SysPowerGroupID)).Contains(m.SysPowerGroupID)
                //                                       && m.Status == StatusE.Live);

                //var psd = new string[] { "9285fad0-8c45-2a05-80da-7ed0ab14c61b", "9122b35e-5f55-14f7-e333-ae2099d416a3" };
                //     var p = await _sysPowerRepository.Query(
                //                                        m => "9285fad0-8c45-2a05-80da-7ed0ab14c61b".Contains(m.SysPowerGroupID)
                //                                       && m.Status == StatusE.Live);
                //     var ppp = await _sysPowerRepository.Query(
                //                                        m => ps.Contains(m.SysPowerGroupID)
                //                                       && m.Status == StatusE.Live);

                var ps = sysMenuPowerGroups.Select(d => d.SysPowerGroupID).ToArray();
                await _sysPowerRepository.DeleteByIds((await _sysPowerRepository.Query(
                                                           m => ps.Contains(m.SysPowerGroupID) &&
                                                           m.Status == 1)
                                                       )
                                                      .Select(d => d.ID).ToArray());


                //await _sysPowerRepository.DeleteByIds((await _sysPowerRepository.Query(
                //                                        m => (sysMenuPowerGroups.Select(d=>d.SysPowerGroupID).ToArray()).Contains( m.SysPowerGroupID )
                //                                       && m.Status == StatusE.Live)
                //                                      )
                //                                       .Select(d => d.ID).ToArray());


                //将 SysMenuPowerGroupVM 转为 SysMenuPowerGroup
                //将数据转化为T
                var source = new Source <List <SysMenuPowerGroupVM> > {
                    Value = sysMenuPowerGVMs
                };
                var t = _mapper.Map <Destination <List <SysMenuPowerGroup> > >(source);
                var sysMenuPowerGroupsU = t.Value;


                //新增对应的权限组
                await _dal.Add(sysMenuPowerGroupsU);


                //新增权限组
                await _sysPowerGroupRepository.Add(sysMenuPowerGVMs.Select(d => d.SysPowerGroup).ToList());

                //组合所有的权限
                var sysPowers = new List <SysPower>();
                foreach (var item in sysMenuPowerGVMs)
                {
                    //sysPowers.Add(item.SysPowers);
                    sysPowers = sysPowers.Union(item.SysPowers).ToList();
                }

                //新增权限组对应的权限
                try
                {
                    await _sysPowerRepository.Add(sysPowers);
                }
                catch (Exception ex)
                {
                    throw;
                }
            });

            if (tranResult)
            {
                return(MessageModel <bool> .Success(true, "更新成功"));
            }

            return(MessageModel <bool> .Fail("事务出错,请重试"));
        }