ApiService.java 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752
  1. package com.roma.romaapi.service;
  2. import com.roma.romaapi.dao.ApiDao;
  3. import com.roma.romaapi.dao.PageDao;
  4. import com.roma.romaapi.utils.CommonUtil;
  5. import com.roma.romaapi.utils.JWTUtil;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.data.redis.core.RedisTemplate;
  8. import com.roma.romaapi.utils.SecurityUtils;
  9. import org.springframework.stereotype.Service;
  10. import java.text.SimpleDateFormat;
  11. import java.util.*;
  12. import java.util.concurrent.TimeUnit;
  13. @Service
  14. public class ApiService {
  15. @Autowired
  16. private RedisTemplate<String, String> redisTemplate;
  17. @Autowired
  18. private ApiDao apiDao;
  19. @Autowired
  20. PageDao pageDao; // 引入dao层
  21. @Autowired
  22. SecurityUtils securityUtils;
  23. @Autowired
  24. JWTUtil jwtUtil;
  25. @Autowired
  26. CommonUtil commonUtil;
  27. // 登录方法
  28. public Map<String, Object> login(Map<String, String[]> maps) {
  29. // 请求参数,获取验证码,验证码token,用户名,密码
  30. String userName = maps.get("api_name")[0]; // 用户名
  31. String password = maps.get("api_password")[0]; // 密码
  32. String captcha = maps.get("api_captcha")[0]; // 用户输入验证码
  33. String captchaToken = maps.get("captchaToken")[0]; // 验证码token,获取验证码的值
  34. String captchaTokenValue = redisTemplate.opsForValue().get(captchaToken); // 缓存中验证码的值
  35. Map<String, Object> loginResult = new HashMap<>();
  36. // String aa = securityUtils.encodePassword(password); // 加密密码
  37. // 判断是否存在此用户,用户密码是否正确
  38. Map<String, Object> UserInfo = apiDao.adminInfoQueryForMap(userName);
  39. if(UserInfo.containsKey("sysErrorCode")) {
  40. loginResult.put("sysErrorCode", "500");
  41. loginResult.put("sysErrorMessage", "账号或密码错误");
  42. return loginResult;
  43. }
  44. Object adminPassword = UserInfo.get("admin_password");
  45. String stringAdminPassword = adminPassword.toString();
  46. // 校验密码是否正确
  47. if(!securityUtils.matchesPassword(password,stringAdminPassword)) {
  48. // 校验密码是否正确 密码不正确,返回错误
  49. loginResult.put("sysErrorCode", "500");
  50. loginResult.put("sysErrorMessage", "账号或密码错误");
  51. return loginResult;
  52. }
  53. // 校验图形验证码
  54. if(!Boolean.TRUE.equals(redisTemplate.hasKey(captchaToken)) || !Objects.equals(captchaTokenValue, captcha)){
  55. loginResult.put("sysErrorCode", "500");
  56. loginResult.put("sysErrorMessage", "验证码错误");
  57. return loginResult;
  58. }
  59. // 通过密码,验证码校验,发放token
  60. Map<String, Object> jwtInfo = new HashMap<>();
  61. Object userId = UserInfo.get("id");
  62. String stringUserId = userId.toString();
  63. jwtInfo.put("id", stringUserId);
  64. jwtInfo.put("loginTime", System.currentTimeMillis()/1000+"");
  65. jwtInfo.put("name", userName);
  66. String jwtToken = jwtUtil.getToken(jwtInfo);
  67. Map<String, Object> map = new HashMap<>();
  68. map.put("loginToken", jwtToken);
  69. return map;
  70. }
  71. // 通过头部,获取用户信息
  72. public Map<String, Object> userInfo(String headerToken) {
  73. String userId = commonUtil.getUserIdByHeaderAuthorization(headerToken);
  74. Map<String, Object> map = new HashMap<>();
  75. if (userId.length() > 0) {
  76. // 获取用户信息
  77. Map<String, Object> userInfo = apiDao.userInfoByIdQueryForMap(userId);
  78. if (userInfo.containsKey("admin_name")) {
  79. map.put("userName", userInfo.get("admin_name"));
  80. }
  81. }
  82. return map;
  83. }
  84. // 通过用户id,获取用户信息
  85. public Map<String, Object> getUserInfoById(Map params) {
  86. Map<String, Object> map = new HashMap<>();
  87. String userId = params.get("id").toString();
  88. if (userId.length() > 0) {
  89. // 获取用户信息
  90. Map<String, Object> userInfo = apiDao.enableAndNoEnableUserInfoByIdQueryForMap(userId);
  91. map.put("admin_name", userInfo.get("admin_name"));
  92. map.put("api_upload_pic", userInfo.get("admin_avatar"));
  93. map.put("is_enable", userInfo.get("is_enable"));
  94. map.put("admin_email", userInfo.get("admin_email"));
  95. map.put("admin_phone", userInfo.get("admin_phone"));
  96. // 获取此用户所有角色
  97. List<Map<String, Object>> userAllRole = apiDao.getAllRoleByUserId(userId);
  98. String userAllRoleString = "";
  99. if (userAllRole.size() > 0) {
  100. for (int i = 0; i < userAllRole.size(); i++) {
  101. Map nowRole = userAllRole.get(i);
  102. String permissionId = nowRole.get("role_id").toString();
  103. userAllRoleString += permissionId + ",";
  104. }
  105. userAllRoleString = commonUtil.trimFirstAndLastChar(userAllRoleString, ",");
  106. }
  107. map.put("user_role", userAllRoleString);
  108. }
  109. return map;
  110. }
  111. // 退出登录
  112. public Map<String, Object> logout(String headerToken) {
  113. Boolean logout = commonUtil.logoutDeleteRedisToken(headerToken);
  114. Map<String, Object> map = new HashMap<>();
  115. map.put("sysErrorCode","50000");
  116. return map;
  117. }
  118. // 获取全部菜单
  119. public List permissionList() {
  120. Map<String, Object> map = new HashMap<>();
  121. List<Map<String, Object>> menuData = pageDao.getAllMenuForList(); // 获取全部菜单数据
  122. List<Map<String, Object>> treeMenu = this.treeMenu(menuData); // 生成树结构
  123. return treeMenu;
  124. }
  125. // 获取全部角色
  126. public Map roleList(Map<String, String> maps) {
  127. String page = "1"; // 页数
  128. String perPage = "15"; // 显示多少条
  129. Map res = new HashMap<>();
  130. Map bindData = commonUtil.filterApiBindParams(maps);
  131. if(maps.containsKey("page")) {
  132. page = maps.get("page");
  133. }
  134. if(maps.containsKey("perPage")) {
  135. perPage = maps.get("perPage");
  136. }
  137. Integer count = apiDao.getAllRoleListHasPagingCount(bindData);
  138. List info = apiDao.getAllRoleListHasPaging(bindData, page, perPage, count);
  139. res.put("count", count);
  140. res.put("rows", info);
  141. return res;
  142. }
  143. // 获取角色详情
  144. public Map roleDetailById(Map params) {
  145. String id = params.get("id").toString();
  146. Map info = apiDao.getDetailsInfoByIdAndType("roma_roles", id);
  147. // 获取此角色下的全部详情数据,并用,分割成字符串 permission_info
  148. List<Map<String, Object>> roleAllPermission = apiDao.getAllPermissionByRoleId(id);
  149. String permissionAllString = "";
  150. if (roleAllPermission.size() > 0) {
  151. for (int i = 0; i < roleAllPermission.size(); i++) {
  152. Map map = roleAllPermission.get(i);
  153. String permissionId = map.get("permission_id").toString();
  154. permissionAllString += permissionId + ",";
  155. }
  156. permissionAllString = commonUtil.trimFirstAndLastChar(permissionAllString, ",");
  157. }
  158. info.put("permission_info", permissionAllString);
  159. return info;
  160. }
  161. // 获取全部page_details---配置权限关联page使用,无分页
  162. public List pageList() {
  163. Map<String, Object> map = new HashMap<>();
  164. List<Map<String, Object>> menuData = pageDao.getAllPageList(); // 获取全部page_details表数据
  165. // List<Map<String, Object>> treeMenu = this.treeMenu(menuData); // 生成树结构
  166. return menuData;
  167. }
  168. // page管理列表-获取带分页的page数据
  169. public Map pageListHasPaging(Map<String, String> maps) {
  170. String page = "1"; // 页数
  171. String perPage = "15"; // 显示多少条
  172. Map res = new HashMap<>();
  173. Map bindData = commonUtil.filterApiBindParams(maps);
  174. if(maps.containsKey("page")) {
  175. page = maps.get("page");
  176. }
  177. if(maps.containsKey("perPage")) {
  178. perPage = maps.get("perPage");
  179. }
  180. Integer count = pageDao.getAllPageListHasPagingCount(bindData);
  181. List info = pageDao.getAllPageListHasPaging(bindData, page, perPage, count);
  182. res.put("count", count);
  183. res.put("rows", info);
  184. return res;
  185. }
  186. // sql管理列表-获取带分页的page数据
  187. public Map sqlListHasPaging(Map<String, String> maps) {
  188. String page = "1"; // 页数
  189. String perPage = "15"; // 显示多少条
  190. Map res = new HashMap<>();
  191. Map bindData = commonUtil.filterApiBindParams(maps);
  192. if(maps.containsKey("page")) {
  193. page = maps.get("page");
  194. }
  195. if(maps.containsKey("perPage")) {
  196. perPage = maps.get("perPage");
  197. }
  198. Integer count = pageDao.getAllSqlListHasPagingCount(bindData);
  199. List info = pageDao.getAllSqlListHasPaging(bindData, page, perPage, count);
  200. res.put("count", count);
  201. res.put("rows", info);
  202. return res;
  203. }
  204. // api管理列表-获取带分页的page数据
  205. public Map apiListHasPaging(Map<String, String> maps) {
  206. String page = "1"; // 页数
  207. String perPage = "15"; // 显示多少条
  208. Map res = new HashMap<>();
  209. Map bindData = commonUtil.filterApiBindParams(maps);
  210. if(maps.containsKey("page")) {
  211. page = maps.get("page");
  212. }
  213. if(maps.containsKey("perPage")) {
  214. perPage = maps.get("perPage");
  215. }
  216. Integer count = pageDao.getAllApiListHasPagingCount(bindData);
  217. List info = pageDao.getAllApiListHasPaging(bindData, page, perPage, count);
  218. res.put("count", count);
  219. res.put("rows", info);
  220. return res;
  221. }
  222. // api管理列表-获取带分页的page数据
  223. public Map itemListHasPaging(Map<String, String> maps) {
  224. String page = "1"; // 页数
  225. String perPage = "15"; // 显示多少条
  226. Map res = new HashMap<>();
  227. Map bindData = commonUtil.filterApiBindParams(maps);
  228. if(maps.containsKey("page")) {
  229. page = maps.get("page");
  230. }
  231. if(maps.containsKey("perPage")) {
  232. perPage = maps.get("perPage");
  233. }
  234. Integer count = pageDao.getAllItemListHasPagingCount(bindData);
  235. List info = pageDao.getAllItemListHasPaging(bindData, page, perPage, count);
  236. res.put("count", count);
  237. res.put("rows", info);
  238. return res;
  239. }
  240. // 获取全部sql_details
  241. public List sqlList() {
  242. Map<String, Object> map = new HashMap<>();
  243. List<Map<String, Object>> menuData = pageDao.getAllSqlList(); // 获取全部page_details表数据
  244. // List<Map<String, Object>> treeMenu = this.treeMenu(menuData); // 生成树结构
  245. return menuData;
  246. }
  247. // 获取全部api_details---配置权限关联api使用,无分页
  248. public List apiList() {
  249. Map<String, Object> map = new HashMap<>();
  250. List<Map<String, Object>> menuData = pageDao.getAllApiList(); // 获取全部page_details表数据
  251. return menuData;
  252. }
  253. // 获取全部roma_roles---用户分配角色使用,无分页
  254. public List roleList() {
  255. Map<String, Object> map = new HashMap<>();
  256. List<Map<String, Object>> menuData = pageDao.getAllRoleList();
  257. return menuData;
  258. }
  259. // 获取全部sql_details---配置权限关联item使用,无分页
  260. public List itemList() {
  261. Map<String, Object> map = new HashMap<>();
  262. List<Map<String, Object>> menuData = pageDao.getAllItemList(); // 获取全部page_details表数据
  263. // List<Map<String, Object>> treeMenu = this.treeMenu(menuData); // 生成树结构
  264. return menuData;
  265. }
  266. // 新建权限
  267. public void addPermissions(Map maps) {
  268. String objectType = maps.get("object_type").toString();
  269. String menuName = "";
  270. if (maps.containsKey("object_type")) {
  271. menuName = maps.get("menu_name").toString();
  272. }
  273. // 通过是否有菜单名称,判断是否是菜单.
  274. if (objectType.equals("page")) {
  275. // 如果没有父级id,则应该有菜单名称.因为没有页面,是菜单目录,要展示菜单名称
  276. // 如果不是菜单,则应该选择页面,启用. 父级权限可选或不选
  277. // 如果是菜单,则可以不选择页面,也可以选择页面. 可以选择父级菜单,即自己是子菜单. 或者不选择父级菜单,自己是顶级菜单.可以输入icon
  278. }
  279. System.out.println("权限数据----------------"+objectType);
  280. System.out.println("权限数据----------------"+menuName);
  281. }
  282. // 添加角色
  283. public Map addRole(Map maps) {
  284. Map retInfo = new HashMap<>(); // 返回信息
  285. // 添加和编辑公用此方法
  286. String id = "";
  287. if (maps.containsKey("id")) {
  288. id = maps.get("id").toString();
  289. }
  290. // 角色名,是否启用,是必填的
  291. String isEnable = maps.get("is_enable").toString();
  292. String roleName = maps.get("role_name").toString();
  293. String roleDesc = "";
  294. if (maps.containsKey("role_desc")) {
  295. roleDesc = maps.get("role_desc").toString();
  296. } else if (maps.containsKey("role_description")) {
  297. roleDesc = maps.get("role_description").toString();
  298. }
  299. String createdAt = commonUtil.getNowYYMMDDHHIISS();
  300. Map<String, Object> addRolePamars = new HashMap<>();
  301. addRolePamars.put("roleName", roleName);
  302. addRolePamars.put("isEnable", isEnable);
  303. addRolePamars.put("roleDesc", roleDesc);
  304. if (id.length()>0) {
  305. // 如果是编辑角色,则增加id参数
  306. addRolePamars.put("id", id);
  307. } else {
  308. // 如果是添加角色,则增加创建时间字段
  309. addRolePamars.put("createdAt", createdAt);
  310. }
  311. Integer roleId = 0;
  312. if (id.length() > 0) {
  313. // 编辑角色
  314. Integer editRoleRet = apiDao.editRole(addRolePamars);
  315. if (editRoleRet < 1) {
  316. // 如果角色信息编辑失败,则直接返回错误,不进行权限编辑
  317. retInfo.put("sysErrorCode", "500");
  318. return retInfo;
  319. }
  320. roleId = Integer.valueOf(id);
  321. } else {
  322. // 添加角色
  323. roleId = apiDao.addRole(addRolePamars);
  324. }
  325. // 判断是否给角色勾选的权限
  326. Boolean hasPermission = maps.containsKey("permission_info");
  327. Integer addRolePermissionRet = 0;
  328. if(hasPermission) {
  329. String allPermission = maps.get("permission_info").toString();
  330. // 如果有权限,则添加完角色后,再添加角色和权限的关联表数据
  331. LinkedHashSet<String> unPermission = new LinkedHashSet<String>();
  332. for(String s : allPermission.split(",")) {
  333. unPermission.add(s);
  334. }
  335. // 循环去重后的数据
  336. String values = "";
  337. for(String val: unPermission) {
  338. values += " ("+roleId+","+val+"),";
  339. }
  340. values = commonUtil.trimFirstAndLastChar(values, ",");
  341. if (id.length() > 0) {
  342. // 编辑权限
  343. addRolePermissionRet = apiDao.editRolePermission(values, id);
  344. } else {
  345. // 添加权限
  346. addRolePermissionRet = apiDao.addRolePermission(values);
  347. }
  348. }
  349. if((hasPermission && addRolePermissionRet>0 && roleId>0) || (!hasPermission && roleId>0)) {
  350. } else {
  351. retInfo.put("sysErrorCode", "500");
  352. }
  353. return retInfo;
  354. }
  355. // 编辑page,获取page单条数据详情
  356. public Map pageDetailById(Map params) {
  357. String id = params.get("id").toString();
  358. Map info = apiDao.getDetailsInfoByIdAndType("page_details", id);
  359. return info;
  360. }
  361. // 添加page_details表数据
  362. public Map addPage(Map maps) {
  363. String pageDesc = "";
  364. String frontPath = maps.get("front_path").toString();
  365. String isEnable = maps.get("is_enable").toString();
  366. String pageCode = maps.get("page_code").toString();
  367. String pageName = maps.get("page_name").toString();
  368. String pageJson = maps.get("page_json").toString();
  369. // if (maps.containsKey("role_desc")) {
  370. // roleDesc = maps.get("role_desc").toString();
  371. // }
  372. if(maps.containsKey("page_desc")) {
  373. pageDesc = maps.get("page_desc").toString();
  374. } else if(maps.containsKey("page_description")){
  375. pageDesc = maps.get("page_description").toString();
  376. }
  377. // 通过是否存在id,判读是新增还是修改
  378. String editId = "";
  379. if (maps.containsKey("id")) {
  380. editId = maps.get("id").toString();
  381. }
  382. String createdAt = commonUtil.getNowYYMMDDHHIISS();
  383. Map<String, Object> addPagePamars = new HashMap<>();
  384. addPagePamars.put("frontPath", frontPath);
  385. addPagePamars.put("isEnable", isEnable);
  386. addPagePamars.put("pageCode", pageCode);
  387. addPagePamars.put("pageDesc", pageDesc);
  388. addPagePamars.put("pageName", pageName);
  389. addPagePamars.put("pageJson", pageJson);
  390. if (editId.length()==0) {
  391. // 如果不存在说明是新增
  392. addPagePamars.put("createdAt", createdAt);
  393. }
  394. // 添加Page
  395. Integer pageId = apiDao.addPageDetails(addPagePamars, editId);
  396. Map retInfo = new HashMap<>();
  397. if(pageId <= 0){
  398. retInfo.put("sysErrorCode", "500");
  399. }
  400. return retInfo;
  401. }
  402. // 添加sql_details表数据
  403. public Map addSql(Map maps, String authorization) {
  404. String sqlDesc = "";
  405. String isList = maps.get("is_list").toString();
  406. String sqlType = maps.get("sql_type").toString();
  407. String isEnable = maps.get("is_enable").toString();
  408. String sqlCode = maps.get("sql_code").toString();
  409. String sqlName = maps.get("sql_name").toString();
  410. String sqlString = maps.get("sql_string").toString();
  411. if(maps.containsKey("sql_description")) {
  412. sqlDesc = maps.get("sql_description").toString();
  413. }
  414. // 通过是否存在id,判读是新增还是修改
  415. String editId = "";
  416. if (maps.containsKey("id")) {
  417. editId = maps.get("id").toString();
  418. }
  419. String createdAt = commonUtil.getNowYYMMDDHHIISS();
  420. Map<String, Object> addPagePamars = new HashMap<>();
  421. addPagePamars.put("isList", isList);
  422. addPagePamars.put("sqlType", sqlType);
  423. addPagePamars.put("isEnable", isEnable);
  424. addPagePamars.put("sqlCode", sqlCode);
  425. addPagePamars.put("sqlName", sqlName);
  426. addPagePamars.put("sqlString", sqlString);
  427. addPagePamars.put("sqlDesc", sqlDesc);
  428. Map<String, Object> loginResult = this.userInfo(authorization);
  429. addPagePamars.put("actionUser", loginResult.get("userName")); // 获取当前用户信息
  430. if (editId.length()==0) {
  431. // 如果不存在说明是新增
  432. addPagePamars.put("createdAt", createdAt);
  433. }
  434. // 添加/编辑Sql
  435. Integer pageId = apiDao.addSqlDetails(addPagePamars, editId);
  436. Map retInfo = new HashMap<>();
  437. if(pageId <= 0){
  438. retInfo.put("sysErrorCode", "500");
  439. }
  440. return retInfo;
  441. }
  442. // 添加/编辑api_details表数据
  443. public Map saveApi(Map maps, String authorization) {
  444. String apiDesc = "";
  445. String isEnable = maps.get("is_enable").toString();
  446. String apiCode = maps.get("api_code").toString();
  447. String apiName = maps.get("api_name").toString();
  448. if(maps.containsKey("api_description")) {
  449. apiDesc = maps.get("api_description").toString();
  450. }
  451. // 通过是否存在id,判读是新增还是修改
  452. String editId = "";
  453. if (maps.containsKey("id")) {
  454. editId = maps.get("id").toString();
  455. }
  456. String createdAt = commonUtil.getNowYYMMDDHHIISS();
  457. Map<String, Object> addPagePamars = new HashMap<>();
  458. addPagePamars.put("isEnable", isEnable);
  459. addPagePamars.put("apiCode", apiCode);
  460. addPagePamars.put("apiName", apiName);
  461. addPagePamars.put("apiDesc", apiDesc);
  462. // Map<String, Object> loginResult = this.userInfo(authorization);
  463. // addPagePamars.put("actionUser", loginResult.get("userName")); // 获取当前用户信息
  464. if (editId.length()==0) {
  465. // 如果不存在说明是新增
  466. addPagePamars.put("createdAt", createdAt);
  467. }
  468. // 添加/编辑
  469. Integer pageId = apiDao.saveApiDetails(addPagePamars, editId);
  470. Map retInfo = new HashMap<>();
  471. if(pageId <= 0){
  472. retInfo.put("sysErrorCode", "500");
  473. }
  474. return retInfo;
  475. }
  476. // 获取api详情
  477. public Map apiDetailById(Map params) {
  478. String id = params.get("id").toString();
  479. Map info = apiDao.getDetailsInfoByIdAndType("api_details", id);
  480. return info;
  481. }
  482. // 获取item详情
  483. public Map itemDetailById(Map params) {
  484. String id = params.get("id").toString();
  485. Map info = apiDao.getDetailsInfoByIdAndType("item_details", id);
  486. return info;
  487. }
  488. // 添加/编辑item_details表数据
  489. public Map saveItem(Map maps, String authorization) {
  490. String itemDesc = "";
  491. String isEnable = maps.get("is_enable").toString();
  492. String itemCode = maps.get("item_code").toString();
  493. String itemName = maps.get("item_name").toString();
  494. if(maps.containsKey("item_description")) {
  495. itemDesc = maps.get("item_description").toString();
  496. }
  497. // 通过是否存在id,判读是新增还是修改
  498. String editId = "";
  499. if (maps.containsKey("id")) {
  500. editId = maps.get("id").toString();
  501. }
  502. String createdAt = commonUtil.getNowYYMMDDHHIISS();
  503. Map<String, Object> addPagePamars = new HashMap<>();
  504. addPagePamars.put("isEnable", isEnable);
  505. addPagePamars.put("itemCode", itemCode);
  506. addPagePamars.put("itemName", itemName);
  507. addPagePamars.put("itemDesc", itemDesc);
  508. // Map<String, Object> loginResult = this.userInfo(authorization);
  509. // addPagePamars.put("actionUser", loginResult.get("userName")); // 获取当前用户信息
  510. if (editId.length()==0) {
  511. // 如果不存在说明是新增
  512. addPagePamars.put("createdAt", createdAt);
  513. }
  514. // 添加/编辑
  515. Integer pageId = apiDao.saveItemDetails(addPagePamars, editId);
  516. Map retInfo = new HashMap<>();
  517. if(pageId <= 0){
  518. retInfo.put("sysErrorCode", "500");
  519. }
  520. return retInfo;
  521. }
  522. // 用户管理列表-获取带分页的page数据
  523. public Map userListHasPaging(Map<String, String> maps) {
  524. String page = "1"; // 页数
  525. String perPage = "15"; // 显示多少条
  526. Map res = new HashMap<>();
  527. Map bindData = commonUtil.filterApiBindParams(maps);
  528. if(maps.containsKey("page")) {
  529. page = maps.get("page");
  530. }
  531. if(maps.containsKey("perPage")) {
  532. perPage = maps.get("perPage");
  533. }
  534. Integer count = pageDao.getAllUserListHasPagingCount(bindData);
  535. List info = pageDao.getAllUserListHasPaging(bindData, page, perPage, count);
  536. res.put("count", count);
  537. res.put("rows", info);
  538. return res;
  539. }
  540. // 添加用户信息
  541. public Map userSave(Map maps, String authorization) {
  542. String isEnable = maps.get("is_enable").toString();
  543. String adminName = maps.get("admin_name").toString();
  544. String userId = "";
  545. String adminPassword = "";
  546. if(maps.containsKey("id")) {
  547. userId = maps.get("id").toString();
  548. } else {
  549. // 添加用户,才会传密码字段
  550. adminPassword = maps.get("admin_password").toString();
  551. }
  552. // 如果是添加用户密码要加密,编辑用户则没有密码字段.编辑密码单独一个功能
  553. // 角色/email/phone/头像 可能不存在
  554. String adminEmail = "";
  555. String adminPhone = "";
  556. String userRole = "";
  557. String apiUploadPic = "";
  558. if (maps.containsKey("admin_email")) {
  559. adminEmail = maps.get("admin_email").toString();
  560. }
  561. if (maps.containsKey("admin_phone")) {
  562. adminPhone = maps.get("admin_phone").toString();
  563. }
  564. if (maps.containsKey("api_upload_pic")) {
  565. apiUploadPic = maps.get("api_upload_pic").toString();
  566. }
  567. if (maps.containsKey("user_role")) {
  568. userRole = maps.get("user_role").toString();
  569. }
  570. String createdAt = commonUtil.getNowYYMMDDHHIISS();
  571. Map<String, Object> addPagePamars = new HashMap<>();
  572. adminPassword = securityUtils.encodePassword(adminPassword); // 加密密码
  573. addPagePamars.put("isEnable", isEnable);
  574. addPagePamars.put("adminName", adminName);
  575. addPagePamars.put("adminPassword", adminPassword);
  576. addPagePamars.put("adminEmail", adminEmail);
  577. addPagePamars.put("adminPhone", adminPhone);
  578. addPagePamars.put("apiUploadPic", apiUploadPic);
  579. if (userId.length() > 0) {
  580. // 如果是编辑用户
  581. } else {
  582. // 如果是添加用户
  583. addPagePamars.put("createdAt", createdAt);
  584. }
  585. // 添加
  586. Integer pageId = apiDao.saveUser(addPagePamars, userRole, userId);
  587. Map retInfo = new HashMap<>();
  588. if(pageId <= 0){
  589. retInfo.put("sysErrorCode", "500");
  590. }
  591. return retInfo;
  592. }
  593. // 转换tree结构数据
  594. private List<Map<String, Object>> treeMenu(List<Map<String, Object>> renderMenu){
  595. // 处理的数据存在
  596. List<Map<String, Object>> pList = new ArrayList<Map<String, Object>>();// eTree
  597. // 获取父节点
  598. for (Map<String, Object> tmp : renderMenu) {
  599. Object parentId = tmp.get("parent_id");
  600. String stringParentId = parentId.toString();// 上级id
  601. Object dataId = tmp.get("id");
  602. String stringDataId = dataId.toString();// 主键id
  603. if (stringParentId.equals("0")) {
  604. // 组装子节点,开始循环去获取子节点
  605. List<?> children = menuChild(stringDataId, renderMenu);
  606. if(children == null || children.size() == 0) {
  607. tmp.put("leaf", true); // 如果不存在子元素
  608. } else {
  609. tmp.put("children", children); // 存在子元素,则添加
  610. }
  611. pList.add(tmp);
  612. }
  613. }
  614. return pList;
  615. }
  616. /**
  617. * 处理子节点
  618. * @param id
  619. * @param data
  620. * @return
  621. */
  622. private List<?> menuChild(String id, List<Map<String, Object>> data) {
  623. List<Object> lists = new ArrayList<Object>();
  624. for (Map<String, Object> map : data) {
  625. Object parentId = map.get("parent_id");
  626. String stringParentId = parentId.toString(); // 上级id
  627. Object dataId = map.get("id");
  628. String stringDataId = dataId.toString(); // 主键id
  629. // 新增字段:权限项名称 权限项路径
  630. Object objectId = map.get("object_id");
  631. Object objectType = map.get("object_type");
  632. String stringObjectId = objectId.toString();
  633. String stringObjectType = objectType.toString();
  634. // 获取菜单名称
  635. Object objectMenuName = map.get("menu_name");
  636. String stringMenuName = objectMenuName.toString();
  637. Map permissionDetails = this.getPermissionDetails(stringObjectType, stringObjectId, stringMenuName);
  638. if (permissionDetails.containsKey("permission_path")) {
  639. map.put("permission_path", permissionDetails.get("permission_path"));
  640. }
  641. if (permissionDetails.containsKey("permission_name")) {
  642. map.put("permission_name", permissionDetails.get("permission_name"));
  643. }
  644. if (stringParentId.equals(id)) {
  645. // 组装子节点,开始循环去获取子节点
  646. List<?> children = menuChild(stringDataId, data);
  647. if(children == null || children.size() == 0) {
  648. map.put("leaf", true); // 如果不存在子元素
  649. } else {
  650. map.put("children", children); // 存在子元素,则添加
  651. }
  652. lists.add(map);
  653. }
  654. }
  655. return lists;
  656. }
  657. private Map getPermissionDetails(String stringObjectType, String stringObjectId, String stringMenuName) {
  658. Map map = new HashMap<>();
  659. // 如果是page,且object_id=0.则代表是菜单目录,没有路径(即不需要打开页面)
  660. if (stringObjectType.equals("page")) {
  661. if(stringObjectId.equals("0")) {
  662. // 如果是菜单目录,则无路径,无权限名称只有菜单名称
  663. map.put("permission_name", stringMenuName);
  664. } else {
  665. // 获取page_details表数据,编码,和权限名称
  666. Map pageInfo = apiDao.getDetailsInfoByIdAndType("page_details", stringObjectId);
  667. map.put("permission_path", "/page/"+pageInfo.get("page_code"));
  668. map.put("permission_name", pageInfo.get("page_name"));
  669. }
  670. } else if (stringObjectType.equals("sql")) {
  671. Map pageInfo = apiDao.getDetailsInfoByIdAndType("sql_details", stringObjectId);
  672. map.put("permission_path", "/dbapi/"+pageInfo.get("sql_code"));
  673. map.put("permission_name", pageInfo.get("sql_name"));
  674. } else if (stringObjectType.equals("api")) {
  675. Map pageInfo = apiDao.getDetailsInfoByIdAndType("api_details", stringObjectId);
  676. map.put("permission_path", "/api/"+pageInfo.get("api_code"));
  677. map.put("permission_name", pageInfo.get("api_name"));
  678. }else if (stringObjectType.equals("item")) {
  679. Map pageInfo = apiDao.getDetailsInfoByIdAndType("item_details", stringObjectId);
  680. map.put("permission_path", "/api/"+pageInfo.get("item_code"));
  681. map.put("permission_name", pageInfo.get("item_name"));
  682. }
  683. return map;
  684. }
  685. }