public async Task <MSSResult <RoleView> > GetPageByParm(RoleQueryParm parm) { MSSResult <RoleView> mRet = new MSSResult <RoleView>(); try { parm.page = parm.page == 0 ? 1 : parm.page; parm.rows = parm.rows == 0 ? Common.Const.PAGESIZE : parm.rows; parm.sort = string.IsNullOrWhiteSpace(parm.sort) ? "id" : parm.sort; parm.order = parm.order.ToLower() == "desc" ? "desc" : "asc"; mRet = await _RoleRepo.GetPageByParm(parm); int[] arrRoleID = mRet.data.Select(a => a.Id).ToArray(); List <RoleActions> lra = await _ActionRepo.GetActionByRoles(arrRoleID); foreach (var item in mRet.data) { List <ActionAll> actionAll = lra.Where(a => a.roleID == item.Id).ToList <ActionAll>(); //item.action_trees = ActionHelper.GetActionTree(actionAll); List <ActionTree> actiontree = ActionHelper.ConvertToTree(actionAll); item.action_trees = ActionHelper.BuildTreeRecursive(actiontree, 0); } mRet.code = (int)ErrType.OK; return(mRet); } catch (Exception ex) { mRet.code = (int)ErrType.SystemErr; mRet.msg = ex.Message; return(mRet); } }
public async Task <ActionResult <ApiResult> > GetPageByParm([FromQuery] RoleQueryParm parm) { ApiResult resp = new ApiResult(); var ret = await _RoleService.GetPageByParm(parm); if (ret.code == (int)ErrType.OK) { var data = new { rows = ret.data, total = ret.relatedData }; resp.code = Code.Success; resp.data = data; return(resp); } else { resp.code = Code.Failure; resp.msg = ret.msg; return(resp); } }
public async Task <MSSResult <RoleView> > GetPageByParm(RoleQueryParm parm) { return(await WithConnection(async c => { MSSResult <RoleView> mRet = new MSSResult <RoleView>(); StringBuilder sql = new StringBuilder(); sql.Append("SELECT DISTINCT a.*,u1.user_name as created_name,u2.user_name as updated_name ") .Append(" FROM Role a ") .Append(" left join user u1 on a.created_by=u1.id left join user u2 on a.updated_by=u2.id ") .Append(" left join role_action ra on a.id=ra.role_id ") .Append(" left join action_info act on act.id=ra.action_id ") .Append(" WHERE 1=1 "); StringBuilder whereSql = new StringBuilder(); if (!string.IsNullOrWhiteSpace(parm.searchName)) { whereSql.Append(" and a.role_name like '%" + parm.searchName + "%' "); } if (parm.searchAction != null) { whereSql.Append(" and act.id=" + parm.searchAction); } if (parm.searchActionGroup != null) { whereSql.Append(" and act.group_id=" + parm.searchActionGroup); } sql.Append(whereSql) .Append(" order by a." + parm.sort + " " + parm.order) .Append(" limit " + (parm.page - 1) * parm.rows + "," + parm.rows); var tmp = await c.QueryAsync <RoleView>(sql.ToString()); if (tmp != null) { mRet.data = tmp.ToList(); } mRet.relatedData = await c.QueryFirstOrDefaultAsync <int>( "select count(DISTINCT a.id) from role a " + " left join role_action ra on a.id = ra.role_id " + " left join action_info act on act.id=ra.action_id where 1=1 " + whereSql.ToString()); return mRet; })); }