ApiService.java 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783
  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. // 获取Page全部数据-权限添加使用
  126. public List pagePermissionList() {
  127. Map<String, Object> map = new HashMap<>();
  128. List<Map<String, Object>> menuData = pageDao.getPageMenuForList(); // 获取page数据
  129. List<Map<String, Object>> treeMenu = this.treeMenu(menuData); // 生成树结构
  130. return treeMenu;
  131. }
  132. // 获取全部角色
  133. public Map roleList(Map<String, String> maps) {
  134. String page = "1"; // 页数
  135. String perPage = "15"; // 显示多少条
  136. Map res = new HashMap<>();
  137. Map bindData = commonUtil.filterApiBindParams(maps);
  138. if(maps.containsKey("page")) {
  139. page = maps.get("page");
  140. }
  141. if(maps.containsKey("perPage")) {
  142. perPage = maps.get("perPage");
  143. }
  144. Integer count = apiDao.getAllRoleListHasPagingCount(bindData);
  145. List info = apiDao.getAllRoleListHasPaging(bindData, page, perPage, count);
  146. res.put("count", count);
  147. res.put("rows", info);
  148. return res;
  149. }
  150. // 获取角色详情
  151. public Map roleDetailById(Map params) {
  152. String id = params.get("id").toString();
  153. Map info = apiDao.getDetailsInfoByIdAndType("roma_roles", id);
  154. // 获取此角色下的全部详情数据,并用,分割成字符串 permission_info
  155. List<Map<String, Object>> roleAllPermission = apiDao.getAllPermissionByRoleId(id);
  156. String permissionAllString = "";
  157. if (roleAllPermission.size() > 0) {
  158. for (int i = 0; i < roleAllPermission.size(); i++) {
  159. Map map = roleAllPermission.get(i);
  160. String permissionId = map.get("permission_id").toString();
  161. permissionAllString += permissionId + ",";
  162. }
  163. permissionAllString = commonUtil.trimFirstAndLastChar(permissionAllString, ",");
  164. }
  165. info.put("permission_info", permissionAllString);
  166. return info;
  167. }
  168. // 获取全部page_details---配置权限关联page使用,无分页
  169. public List pageList() {
  170. Map<String, Object> map = new HashMap<>();
  171. List<Map<String, Object>> menuData = pageDao.getAllPageList(); // 获取全部page_details表数据
  172. // List<Map<String, Object>> treeMenu = this.treeMenu(menuData); // 生成树结构
  173. return menuData;
  174. }
  175. // page管理列表-获取带分页的page数据
  176. public Map pageListHasPaging(Map<String, String> maps) {
  177. String page = "1"; // 页数
  178. String perPage = "15"; // 显示多少条
  179. Map res = new HashMap<>();
  180. Map bindData = commonUtil.filterApiBindParams(maps);
  181. if(maps.containsKey("page")) {
  182. page = maps.get("page");
  183. }
  184. if(maps.containsKey("perPage")) {
  185. perPage = maps.get("perPage");
  186. }
  187. Integer count = pageDao.getAllPageListHasPagingCount(bindData);
  188. List info = pageDao.getAllPageListHasPaging(bindData, page, perPage, count);
  189. res.put("count", count);
  190. res.put("rows", info);
  191. return res;
  192. }
  193. // sql管理列表-获取带分页的page数据
  194. public Map sqlListHasPaging(Map<String, String> maps) {
  195. String page = "1"; // 页数
  196. String perPage = "15"; // 显示多少条
  197. Map res = new HashMap<>();
  198. Map bindData = commonUtil.filterApiBindParams(maps);
  199. if(maps.containsKey("page")) {
  200. page = maps.get("page");
  201. }
  202. if(maps.containsKey("perPage")) {
  203. perPage = maps.get("perPage");
  204. }
  205. Integer count = pageDao.getAllSqlListHasPagingCount(bindData);
  206. List info = pageDao.getAllSqlListHasPaging(bindData, page, perPage, count);
  207. res.put("count", count);
  208. res.put("rows", info);
  209. return res;
  210. }
  211. // api管理列表-获取带分页的page数据
  212. public Map apiListHasPaging(Map<String, String> maps) {
  213. String page = "1"; // 页数
  214. String perPage = "15"; // 显示多少条
  215. Map res = new HashMap<>();
  216. Map bindData = commonUtil.filterApiBindParams(maps);
  217. if(maps.containsKey("page")) {
  218. page = maps.get("page");
  219. }
  220. if(maps.containsKey("perPage")) {
  221. perPage = maps.get("perPage");
  222. }
  223. Integer count = pageDao.getAllApiListHasPagingCount(bindData);
  224. List info = pageDao.getAllApiListHasPaging(bindData, page, perPage, count);
  225. res.put("count", count);
  226. res.put("rows", info);
  227. return res;
  228. }
  229. // api管理列表-获取带分页的page数据
  230. public Map itemListHasPaging(Map<String, String> maps) {
  231. String page = "1"; // 页数
  232. String perPage = "15"; // 显示多少条
  233. Map res = new HashMap<>();
  234. Map bindData = commonUtil.filterApiBindParams(maps);
  235. if(maps.containsKey("page")) {
  236. page = maps.get("page");
  237. }
  238. if(maps.containsKey("perPage")) {
  239. perPage = maps.get("perPage");
  240. }
  241. Integer count = pageDao.getAllItemListHasPagingCount(bindData);
  242. List info = pageDao.getAllItemListHasPaging(bindData, page, perPage, count);
  243. res.put("count", count);
  244. res.put("rows", info);
  245. return res;
  246. }
  247. // 获取全部sql_details
  248. public List sqlList() {
  249. Map<String, Object> map = new HashMap<>();
  250. List<Map<String, Object>> menuData = pageDao.getAllSqlList(); // 获取全部page_details表数据
  251. // List<Map<String, Object>> treeMenu = this.treeMenu(menuData); // 生成树结构
  252. return menuData;
  253. }
  254. // 获取全部api_details---配置权限关联api使用,无分页
  255. public List apiList() {
  256. Map<String, Object> map = new HashMap<>();
  257. List<Map<String, Object>> menuData = pageDao.getAllApiList(); // 获取全部page_details表数据
  258. return menuData;
  259. }
  260. // 获取全部roma_roles---用户分配角色使用,无分页
  261. public List roleList() {
  262. Map<String, Object> map = new HashMap<>();
  263. List<Map<String, Object>> menuData = pageDao.getAllRoleList();
  264. return menuData;
  265. }
  266. // 获取全部sql_details---配置权限关联item使用,无分页
  267. public List itemList() {
  268. Map<String, Object> map = new HashMap<>();
  269. List<Map<String, Object>> menuData = pageDao.getAllItemList(); // 获取全部page_details表数据
  270. // List<Map<String, Object>> treeMenu = this.treeMenu(menuData); // 生成树结构
  271. return menuData;
  272. }
  273. // 新建权限
  274. public void addPermissions(Map maps) {
  275. String objectType = maps.get("object_type").toString();
  276. String menuName = "";
  277. if (maps.containsKey("object_type")) {
  278. menuName = maps.get("menu_name").toString();
  279. }
  280. // 通过是否有菜单名称,判断是否是菜单.
  281. if (objectType.equals("page")) {
  282. // 如果没有父级id,则应该有菜单名称.因为没有页面,是菜单目录,要展示菜单名称
  283. // 如果不是菜单,则应该选择页面,启用. 父级权限可选或不选
  284. // 如果是菜单,则可以不选择页面,也可以选择页面. 可以选择父级菜单,即自己是子菜单. 或者不选择父级菜单,自己是顶级菜单.可以输入icon
  285. }
  286. System.out.println("权限数据----------------"+objectType);
  287. System.out.println("权限数据----------------"+menuName);
  288. }
  289. // 添加角色
  290. public Map addRole(Map maps) {
  291. Map retInfo = new HashMap<>(); // 返回信息
  292. // 添加和编辑公用此方法
  293. String id = "";
  294. if (maps.containsKey("id")) {
  295. id = maps.get("id").toString();
  296. }
  297. // 角色名,是否启用,是必填的
  298. String isEnable = maps.get("is_enable").toString();
  299. String roleName = maps.get("role_name").toString();
  300. String roleDesc = "";
  301. if (maps.containsKey("role_desc")) {
  302. roleDesc = maps.get("role_desc").toString();
  303. } else if (maps.containsKey("role_description")) {
  304. roleDesc = maps.get("role_description").toString();
  305. }
  306. String createdAt = commonUtil.getNowYYMMDDHHIISS();
  307. Map<String, Object> addRolePamars = new HashMap<>();
  308. addRolePamars.put("roleName", roleName);
  309. addRolePamars.put("isEnable", isEnable);
  310. addRolePamars.put("roleDesc", roleDesc);
  311. if (id.length()>0) {
  312. // 如果是编辑角色,则增加id参数
  313. addRolePamars.put("id", id);
  314. } else {
  315. // 如果是添加角色,则增加创建时间字段
  316. addRolePamars.put("createdAt", createdAt);
  317. }
  318. Integer roleId = 0;
  319. if (id.length() > 0) {
  320. // 编辑角色
  321. Integer editRoleRet = apiDao.editRole(addRolePamars);
  322. if (editRoleRet < 1) {
  323. // 如果角色信息编辑失败,则直接返回错误,不进行权限编辑
  324. retInfo.put("sysErrorCode", "500");
  325. return retInfo;
  326. }
  327. roleId = Integer.valueOf(id);
  328. } else {
  329. // 添加角色
  330. roleId = apiDao.addRole(addRolePamars);
  331. }
  332. // 判断是否给角色勾选的权限
  333. Boolean hasPermission = maps.containsKey("permission_info");
  334. Integer addRolePermissionRet = 0;
  335. if(hasPermission) {
  336. String allPermission = maps.get("permission_info").toString();
  337. // 如果有权限,则添加完角色后,再添加角色和权限的关联表数据
  338. LinkedHashSet<String> unPermission = new LinkedHashSet<String>();
  339. for(String s : allPermission.split(",")) {
  340. unPermission.add(s);
  341. }
  342. // 循环去重后的数据
  343. String values = "";
  344. for(String val: unPermission) {
  345. values += " ("+roleId+","+val+"),";
  346. }
  347. values = commonUtil.trimFirstAndLastChar(values, ",");
  348. if (id.length() > 0) {
  349. // 编辑权限
  350. addRolePermissionRet = apiDao.editRolePermission(values, id);
  351. } else {
  352. // 添加权限
  353. addRolePermissionRet = apiDao.addRolePermission(values);
  354. }
  355. }
  356. if((hasPermission && addRolePermissionRet>0 && roleId>0) || (!hasPermission && roleId>0)) {
  357. } else {
  358. retInfo.put("sysErrorCode", "500");
  359. }
  360. return retInfo;
  361. }
  362. // 编辑page,获取page单条数据详情
  363. public Map pageDetailById(Map params) {
  364. String id = params.get("id").toString();
  365. Map info = apiDao.getDetailsInfoByIdAndType("page_details", id);
  366. return info;
  367. }
  368. // 添加page_details表数据
  369. public Map addPage(Map maps) {
  370. String pageDesc = "";
  371. String frontPath = maps.get("front_path").toString();
  372. String isEnable = maps.get("is_enable").toString();
  373. String pageCode = maps.get("page_code").toString();
  374. String pageName = maps.get("page_name").toString();
  375. String pageJson = maps.get("page_json").toString();
  376. // if (maps.containsKey("role_desc")) {
  377. // roleDesc = maps.get("role_desc").toString();
  378. // }
  379. if(maps.containsKey("page_desc")) {
  380. pageDesc = maps.get("page_desc").toString();
  381. } else if(maps.containsKey("page_description")){
  382. pageDesc = maps.get("page_description").toString();
  383. }
  384. // 通过是否存在id,判读是新增还是修改
  385. String editId = "";
  386. if (maps.containsKey("id")) {
  387. editId = maps.get("id").toString();
  388. }
  389. String createdAt = commonUtil.getNowYYMMDDHHIISS();
  390. Map<String, Object> addPagePamars = new HashMap<>();
  391. addPagePamars.put("frontPath", frontPath);
  392. addPagePamars.put("isEnable", isEnable);
  393. addPagePamars.put("pageCode", pageCode);
  394. addPagePamars.put("pageDesc", pageDesc);
  395. addPagePamars.put("pageName", pageName);
  396. addPagePamars.put("pageJson", pageJson);
  397. if (editId.length()==0) {
  398. // 如果不存在说明是新增
  399. addPagePamars.put("createdAt", createdAt);
  400. }
  401. // 添加Page
  402. Integer pageId = apiDao.addPageDetails(addPagePamars, editId);
  403. Map retInfo = new HashMap<>();
  404. if(pageId <= 0){
  405. retInfo.put("sysErrorCode", "500");
  406. }
  407. return retInfo;
  408. }
  409. // 添加sql_details表数据
  410. public Map addSql(Map maps, String authorization) {
  411. String sqlDesc = "";
  412. String isList = maps.get("is_list").toString();
  413. String sqlType = maps.get("sql_type").toString();
  414. String isEnable = maps.get("is_enable").toString();
  415. String sqlCode = maps.get("sql_code").toString();
  416. String sqlName = maps.get("sql_name").toString();
  417. String sqlString = maps.get("sql_string").toString();
  418. if(maps.containsKey("sql_description")) {
  419. sqlDesc = maps.get("sql_description").toString();
  420. }
  421. // 通过是否存在id,判读是新增还是修改
  422. String editId = "";
  423. if (maps.containsKey("id")) {
  424. editId = maps.get("id").toString();
  425. }
  426. String createdAt = commonUtil.getNowYYMMDDHHIISS();
  427. Map<String, Object> addPagePamars = new HashMap<>();
  428. addPagePamars.put("isList", isList);
  429. addPagePamars.put("sqlType", sqlType);
  430. addPagePamars.put("isEnable", isEnable);
  431. addPagePamars.put("sqlCode", sqlCode);
  432. addPagePamars.put("sqlName", sqlName);
  433. addPagePamars.put("sqlString", sqlString);
  434. addPagePamars.put("sqlDesc", sqlDesc);
  435. Map<String, Object> loginResult = this.userInfo(authorization);
  436. addPagePamars.put("actionUser", loginResult.get("userName")); // 获取当前用户信息
  437. if (editId.length()==0) {
  438. // 如果不存在说明是新增
  439. addPagePamars.put("createdAt", createdAt);
  440. }
  441. // 添加/编辑Sql
  442. Integer pageId = apiDao.addSqlDetails(addPagePamars, editId);
  443. Map retInfo = new HashMap<>();
  444. if(pageId <= 0){
  445. retInfo.put("sysErrorCode", "500");
  446. }
  447. return retInfo;
  448. }
  449. // 添加/编辑api_details表数据
  450. public Map saveApi(Map maps, String authorization) {
  451. String apiDesc = "";
  452. String isEnable = maps.get("is_enable").toString();
  453. String apiCode = maps.get("api_code").toString();
  454. String apiName = maps.get("api_name").toString();
  455. if(maps.containsKey("api_description")) {
  456. apiDesc = maps.get("api_description").toString();
  457. }
  458. // 通过是否存在id,判读是新增还是修改
  459. String editId = "";
  460. if (maps.containsKey("id")) {
  461. editId = maps.get("id").toString();
  462. }
  463. String createdAt = commonUtil.getNowYYMMDDHHIISS();
  464. Map<String, Object> addPagePamars = new HashMap<>();
  465. addPagePamars.put("isEnable", isEnable);
  466. addPagePamars.put("apiCode", apiCode);
  467. addPagePamars.put("apiName", apiName);
  468. addPagePamars.put("apiDesc", apiDesc);
  469. // Map<String, Object> loginResult = this.userInfo(authorization);
  470. // addPagePamars.put("actionUser", loginResult.get("userName")); // 获取当前用户信息
  471. if (editId.length()==0) {
  472. // 如果不存在说明是新增
  473. addPagePamars.put("createdAt", createdAt);
  474. }
  475. // 添加/编辑
  476. Integer pageId = apiDao.saveApiDetails(addPagePamars, editId);
  477. Map retInfo = new HashMap<>();
  478. if(pageId <= 0){
  479. retInfo.put("sysErrorCode", "500");
  480. }
  481. return retInfo;
  482. }
  483. // 获取api详情
  484. public Map apiDetailById(Map params) {
  485. String id = params.get("id").toString();
  486. Map info = apiDao.getDetailsInfoByIdAndType("api_details", id);
  487. return info;
  488. }
  489. // 获取item详情
  490. public Map itemDetailById(Map params) {
  491. String id = params.get("id").toString();
  492. Map info = apiDao.getDetailsInfoByIdAndType("item_details", id);
  493. return info;
  494. }
  495. // 添加/编辑item_details表数据
  496. public Map saveItem(Map maps, String authorization) {
  497. String itemDesc = "";
  498. String isEnable = maps.get("is_enable").toString();
  499. String itemCode = maps.get("item_code").toString();
  500. String itemName = maps.get("item_name").toString();
  501. if(maps.containsKey("item_description")) {
  502. itemDesc = maps.get("item_description").toString();
  503. }
  504. // 通过是否存在id,判读是新增还是修改
  505. String editId = "";
  506. if (maps.containsKey("id")) {
  507. editId = maps.get("id").toString();
  508. }
  509. String createdAt = commonUtil.getNowYYMMDDHHIISS();
  510. Map<String, Object> addPagePamars = new HashMap<>();
  511. addPagePamars.put("isEnable", isEnable);
  512. addPagePamars.put("itemCode", itemCode);
  513. addPagePamars.put("itemName", itemName);
  514. addPagePamars.put("itemDesc", itemDesc);
  515. // Map<String, Object> loginResult = this.userInfo(authorization);
  516. // addPagePamars.put("actionUser", loginResult.get("userName")); // 获取当前用户信息
  517. if (editId.length()==0) {
  518. // 如果不存在说明是新增
  519. addPagePamars.put("createdAt", createdAt);
  520. }
  521. // 添加/编辑
  522. Integer pageId = apiDao.saveItemDetails(addPagePamars, editId);
  523. Map retInfo = new HashMap<>();
  524. if(pageId <= 0){
  525. retInfo.put("sysErrorCode", "500");
  526. }
  527. return retInfo;
  528. }
  529. // 用户管理列表-获取带分页的page数据
  530. public Map userListHasPaging(Map<String, String> maps) {
  531. String page = "1"; // 页数
  532. String perPage = "15"; // 显示多少条
  533. Map res = new HashMap<>();
  534. Map bindData = commonUtil.filterApiBindParams(maps);
  535. if(maps.containsKey("page")) {
  536. page = maps.get("page");
  537. }
  538. if(maps.containsKey("perPage")) {
  539. perPage = maps.get("perPage");
  540. }
  541. Integer count = pageDao.getAllUserListHasPagingCount(bindData);
  542. List info = pageDao.getAllUserListHasPaging(bindData, page, perPage, count);
  543. res.put("count", count);
  544. res.put("rows", info);
  545. return res;
  546. }
  547. // 添加用户信息
  548. public Map userSave(Map maps, String authorization) {
  549. String isEnable = maps.get("is_enable").toString();
  550. String adminName = maps.get("admin_name").toString();
  551. String userId = "";
  552. String adminPassword = "";
  553. if(maps.containsKey("id")) {
  554. userId = maps.get("id").toString();
  555. } else {
  556. // 添加用户,才会传密码字段
  557. adminPassword = maps.get("admin_password").toString();
  558. }
  559. // 如果是添加用户密码要加密,编辑用户则没有密码字段.编辑密码单独一个功能
  560. // 角色/email/phone/头像 可能不存在
  561. String adminEmail = "";
  562. String adminPhone = "";
  563. String userRole = "";
  564. String apiUploadPic = "";
  565. if (maps.containsKey("admin_email")) {
  566. adminEmail = maps.get("admin_email").toString();
  567. }
  568. if (maps.containsKey("admin_phone")) {
  569. adminPhone = maps.get("admin_phone").toString();
  570. }
  571. if (maps.containsKey("api_upload_pic")) {
  572. apiUploadPic = maps.get("api_upload_pic").toString();
  573. }
  574. if (maps.containsKey("user_role")) {
  575. userRole = maps.get("user_role").toString();
  576. }
  577. String createdAt = commonUtil.getNowYYMMDDHHIISS();
  578. Map<String, Object> addPagePamars = new HashMap<>();
  579. adminPassword = securityUtils.encodePassword(adminPassword); // 加密密码
  580. addPagePamars.put("isEnable", isEnable);
  581. addPagePamars.put("adminName", adminName);
  582. addPagePamars.put("adminPassword", adminPassword);
  583. addPagePamars.put("adminEmail", adminEmail);
  584. addPagePamars.put("adminPhone", adminPhone);
  585. addPagePamars.put("apiUploadPic", apiUploadPic);
  586. if (userId.length() > 0) {
  587. // 如果是编辑用户
  588. } else {
  589. // 如果是添加用户
  590. addPagePamars.put("createdAt", createdAt);
  591. }
  592. // 添加
  593. Integer pageId = apiDao.saveUser(addPagePamars, userRole, userId);
  594. Map retInfo = new HashMap<>();
  595. if(pageId <= 0){
  596. retInfo.put("sysErrorCode", "500");
  597. }
  598. return retInfo;
  599. }
  600. // 转换tree结构数据
  601. private List<Map<String, Object>> treeMenu(List<Map<String, Object>> renderMenu){
  602. // 处理的数据存在
  603. List<Map<String, Object>> pList = new ArrayList<Map<String, Object>>();// eTree
  604. // 获取父节点
  605. for (Map<String, Object> tmp : renderMenu) {
  606. Object parentId = tmp.get("parent_id");
  607. String stringParentId = parentId.toString();// 上级id
  608. Object dataId = tmp.get("id");
  609. String stringDataId = dataId.toString();// 主键id
  610. if (stringParentId.equals("0")) {
  611. // 组装子节点,开始循环去获取子节点
  612. List<?> children = menuChild(stringDataId, renderMenu);
  613. if(children == null || children.size() == 0) {
  614. tmp.put("leaf", true); // 如果不存在子元素
  615. } else {
  616. tmp.put("children", children); // 存在子元素,则添加
  617. }
  618. pList.add(tmp);
  619. }
  620. }
  621. return pList;
  622. }
  623. /**
  624. * 处理子节点
  625. * @param id
  626. * @param data
  627. * @return
  628. */
  629. private List<?> menuChild(String id, List<Map<String, Object>> data) {
  630. List<Object> lists = new ArrayList<Object>();
  631. for (Map<String, Object> map : data) {
  632. Object parentId = map.get("parent_id");
  633. String stringParentId = parentId.toString(); // 上级id
  634. Object dataId = map.get("id");
  635. String stringDataId = dataId.toString(); // 主键id
  636. // 新增字段:权限项名称 权限项路径
  637. Object objectId = map.get("object_id");
  638. Object objectType = map.get("object_type");
  639. String stringObjectId = objectId.toString();
  640. String stringObjectType = objectType.toString();
  641. // 获取菜单名称
  642. Object objectMenuName = map.get("menu_name");
  643. String stringMenuName = objectMenuName.toString();
  644. Map permissionDetails = this.getPermissionDetails(stringObjectType, stringObjectId, stringMenuName);
  645. if (permissionDetails.containsKey("permission_path")) {
  646. map.put("permission_path", permissionDetails.get("permission_path"));
  647. }
  648. if (permissionDetails.containsKey("permission_name")) {
  649. map.put("permission_name", permissionDetails.get("permission_name"));
  650. }
  651. if (permissionDetails.containsKey("show_name")) {
  652. map.put("show_name", permissionDetails.get("show_name"));
  653. }
  654. if (stringParentId.equals(id)) {
  655. // 组装子节点,开始循环去获取子节点
  656. List<?> children = menuChild(stringDataId, data);
  657. if(children == null || children.size() == 0) {
  658. map.put("leaf", true); // 如果不存在子元素
  659. } else {
  660. map.put("children", children); // 存在子元素,则添加
  661. }
  662. lists.add(map);
  663. }
  664. }
  665. return lists;
  666. }
  667. private Map getPermissionDetails(String stringObjectType, String stringObjectId, String stringMenuName) {
  668. String separator = " / ";
  669. Map map = new HashMap<>();
  670. // 如果是page,且object_id=0.则代表是菜单目录,没有路径(即不需要打开页面)
  671. // String showNamePageCode = ""; // 权限管理-page类型使用
  672. // if (tmp.containsKey("page_code") && tmp.containsKey("menu_name")) {
  673. // if (tmp.get("page_code") != null) {
  674. // showNamePageCode = tmp.get("page_code").toString() + "-";
  675. // }
  676. // if (tmp.get("page_name") != null) {
  677. // showNamePageCode = showNamePageCode + tmp.get("page_name").toString();
  678. // } else {
  679. // showNamePageCode = showNamePageCode + tmp.get("menu_name").toString();
  680. // }
  681. // }
  682. // tmp.put("show_name", showNamePageCode);
  683. if (stringObjectType.equals("page")) {
  684. if(stringObjectId.equals("0")) {
  685. // 如果是菜单目录,则无路径,无权限名称只有菜单名称
  686. map.put("permission_name", stringMenuName);
  687. map.put("show_name", stringMenuName);
  688. } else {
  689. // 获取page_details表数据,编码,和权限名称
  690. Map pageInfo = apiDao.getDetailsInfoByIdAndType("page_details", stringObjectId);
  691. map.put("permission_path", "/page/"+pageInfo.get("page_code"));
  692. map.put("permission_name", pageInfo.get("page_name"));
  693. map.put("show_name", pageInfo.get("page_code").toString() + separator + pageInfo.get("page_name"));
  694. }
  695. } else if (stringObjectType.equals("sql")) {
  696. Map pageInfo = apiDao.getDetailsInfoByIdAndType("sql_details", stringObjectId);
  697. map.put("permission_path", "/dbapi/"+pageInfo.get("sql_code"));
  698. map.put("permission_name", pageInfo.get("sql_name"));
  699. map.put("show_name", pageInfo.get("sql_code").toString() + separator + pageInfo.get("sql_name"));
  700. } else if (stringObjectType.equals("api")) {
  701. Map pageInfo = apiDao.getDetailsInfoByIdAndType("api_details", stringObjectId);
  702. map.put("permission_path", "/api/"+pageInfo.get("api_code"));
  703. map.put("permission_name", pageInfo.get("api_name"));
  704. map.put("show_name", pageInfo.get("api_code").toString() + separator + pageInfo.get("api_name"));
  705. }else if (stringObjectType.equals("item")) {
  706. Map pageInfo = apiDao.getDetailsInfoByIdAndType("item_details", stringObjectId);
  707. map.put("permission_path", "/api/"+pageInfo.get("item_code"));
  708. map.put("permission_name", pageInfo.get("item_name"));
  709. map.put("show_name", pageInfo.get("item_code").toString() + separator + pageInfo.get("item_name"));
  710. }
  711. return map;
  712. }
  713. }