1:先查询dept表所有数据,用stream构建deptMap 第一层key为dept_pa,th,value也为map结构 key是parentId,value是List集合 通过用户的deptId查出用户所在部门并通过上述构建的deptMap查出所属部门和他的所有父级部门,构建userDeptIds,通过userDeptIds查询dept_app表 union userId查询user_app,得到appIds后去重,再通过appIds查询app表 left join cate表得到app集合 2:构建一个关联表,关联到userid,其他字段有app_id,order_num,第一题的步骤完成后,通过userId查询关联表,得到集合,若集合为空直接返回,不为空则先对原数据进行filtr操作得到置顶app的和未置顶app的两个列表,然后操作置顶app列表排序 最后将两个列表组合 3:简单工厂模式就不说了