ApiDao.java 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452
  1. package com.roma.romaapi.dao;
  2. import com.roma.romaapi.utils.CommonUtil;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.dao.EmptyResultDataAccessException;
  5. import org.springframework.jdbc.core.PreparedStatementCreator;
  6. import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
  7. import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
  8. import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
  9. import org.springframework.jdbc.support.GeneratedKeyHolder;
  10. import org.springframework.jdbc.support.KeyHolder;
  11. import org.springframework.stereotype.Repository;
  12. import java.util.HashMap;
  13. import java.util.LinkedHashSet;
  14. import java.util.List;
  15. import java.util.Map;
  16. @Repository
  17. public class ApiDao {
  18. @Autowired
  19. private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
  20. @Autowired
  21. private CommonUtil commonUtil;
  22. // 通过code,获取要执行的sql
  23. public Map<String, Object> adminInfoQueryForMap(String adminName) {
  24. try {
  25. Map<String, Object> paramMap = new HashMap<>();
  26. paramMap.put("admin_name", adminName);
  27. Map<String, Object> resMap2 = namedParameterJdbcTemplate.queryForMap(
  28. "SELECT * FROM `admin_user` where admin_name = :admin_name AND is_enable=1", paramMap);
  29. return resMap2;
  30. } catch (EmptyResultDataAccessException e) {
  31. Map<String, Object> resultMap = new HashMap<>();
  32. resultMap.put("sysErrorCode", "500");
  33. return resultMap;
  34. }
  35. }
  36. // 通过用户id,获取用户信息
  37. public Map<String, Object> userInfoByIdQueryForMap(String userID) {
  38. try {
  39. Map<String, Object> paramMap = new HashMap<>();
  40. paramMap.put("admin_id", userID);
  41. Map<String, Object> resMap2 = namedParameterJdbcTemplate.queryForMap(
  42. "SELECT * FROM `admin_user` where id = :admin_id AND is_enable=1", paramMap);
  43. return resMap2;
  44. } catch (EmptyResultDataAccessException e) {
  45. Map<String, Object> resultMap = new HashMap<>();
  46. resultMap.put("sysErrorCode", "500");
  47. return resultMap;
  48. }
  49. }
  50. // 通过用户id,获取禁用和启用用户详情
  51. public Map<String, Object> enableAndNoEnableUserInfoByIdQueryForMap(String userID) {
  52. try {
  53. Map<String, Object> paramMap = new HashMap<>();
  54. paramMap.put("admin_id", userID);
  55. Map<String, Object> resMap2 = namedParameterJdbcTemplate.queryForMap(
  56. "SELECT * FROM `admin_user` where id = :admin_id ", paramMap);
  57. return resMap2;
  58. } catch (EmptyResultDataAccessException e) {
  59. Map<String, Object> resultMap = new HashMap<>();
  60. resultMap.put("sysErrorCode", "500");
  61. return resultMap;
  62. }
  63. }
  64. public void addPermissions(Map bindValue) {
  65. // insert into tableName(colunm1,colunm2,...) value(value1,value2,...);
  66. String sql = "INSERT INTO `roma_permissions` " +
  67. "(`parent_id`,`page_id`,`sort`,`value`,`display_name`,`description`,`type`,`created_at`,`icon`,`is_enable`) " +
  68. "value(:parent_id,:page_id,:sort,:value,:display_name,:description,:type,:created_at,:icon,:is_enable) ";
  69. Integer row = namedParameterJdbcTemplate.update(sql, bindValue);
  70. }
  71. // 通过id和数据表类型,查询不同的数据
  72. public Map getDetailsInfoByIdAndType(String tableName, String id) {
  73. try {
  74. Map<String, Object> paramMap = new HashMap<>();
  75. paramMap.put("id", id);
  76. Map<String, Object> resMap2 = namedParameterJdbcTemplate.queryForMap(
  77. "SELECT * FROM `"+tableName+"` where id = :id", paramMap);
  78. return resMap2;
  79. } catch (EmptyResultDataAccessException e) {
  80. Map<String, Object> resultMap = new HashMap<>();
  81. resultMap.put("sysErrorCode", "500");
  82. return resultMap;
  83. }
  84. }
  85. // 通过角色id,获取角色下全部的权限信息
  86. public List<Map<String, Object>> getAllPermissionByRoleId(String id){
  87. String sql = " SELECT * FROM `roma_permission_role` WHERE role_id=:id ";
  88. Map<String, Object> bindValue = new HashMap<>();
  89. bindValue.put("id", id);
  90. List<Map<String, Object>> resMap2 = namedParameterJdbcTemplate.queryForList(sql, bindValue);
  91. return resMap2;
  92. }
  93. // 通过角色id,获取角色下全部的权限信息
  94. public List<Map<String, Object>> getAllRoleByUserId(String id){
  95. String sql = " SELECT * FROM `roma_role_user` WHERE user_id=:id ";
  96. Map<String, Object> bindValue = new HashMap<>();
  97. bindValue.put("id", id);
  98. List<Map<String, Object>> resMap2 = namedParameterJdbcTemplate.queryForList(sql, bindValue);
  99. return resMap2;
  100. }
  101. // 添加角色
  102. public Integer addRole(Map<String, Object> bindValue) {
  103. String insertSql = " INSERT INTO `roma_roles` (`role_name`,`role_description`,`is_enable`,`created_at`) " +
  104. "VALUES (:roleName,:roleDesc,:isEnable,:createdAt) ";
  105. KeyHolder keyHolder = new GeneratedKeyHolder();
  106. Integer row = namedParameterJdbcTemplate.update(insertSql, new MapSqlParameterSource(bindValue), keyHolder);
  107. int k = keyHolder.getKey().intValue();
  108. return k;
  109. }
  110. // 编辑角色信息
  111. public Integer editRole(Map<String, Object> bindValue) {
  112. String editSql = " UPDATE `roma_roles` SET `role_name`=:roleName,`role_description`=:roleDesc,`is_enable`=:isEnable WHERE id=:id";
  113. Integer row = namedParameterJdbcTemplate.update(editSql, bindValue);
  114. return row;
  115. }
  116. // 编辑角色权限
  117. public Integer editRolePermission(String info, String id) {
  118. // 先删除此角色的所有权限
  119. Map<String, Object> delParams = new HashMap<>();
  120. delParams.put("id", id);
  121. String delRolePermissionSql = " DELETE FROM `roma_permission_role` WHERE role_id=:id ";
  122. Integer row = namedParameterJdbcTemplate.update(delRolePermissionSql, delParams);
  123. // 增加此角色的权限信息
  124. Map addMap = new HashMap<>();
  125. String insertSql = " INSERT INTO `roma_permission_role` (`role_id`,`permission_id`) VALUES " + info;
  126. Integer rowAdd = namedParameterJdbcTemplate.update(insertSql, addMap);
  127. return rowAdd;
  128. }
  129. // 插入角色和权限关联表数据
  130. public Integer addRolePermission(String info){
  131. Map map = new HashMap<>();
  132. String insertSql = " INSERT INTO `roma_permission_role` (`role_id`,`permission_id`) VALUES " + info;
  133. Integer row = namedParameterJdbcTemplate.update(insertSql, map);
  134. return row;
  135. }
  136. // 添加page_details表数据
  137. public Integer addPageDetails(Map<String, Object> bindValue, String editId) {
  138. String sql = "";
  139. if (editId.length()==0) {
  140. sql = " INSERT INTO `page_details` (`page_name`,`page_code`,`page_json`,`created_at`,`is_enable`," +
  141. "`front_path`,`page_description`) VALUES (:pageName,:pageCode,:pageJson,:createdAt,:isEnable,:frontPath,:pageDesc) ";
  142. KeyHolder keyHolder = new GeneratedKeyHolder();
  143. Integer row = namedParameterJdbcTemplate.update(sql, new MapSqlParameterSource(bindValue), keyHolder);
  144. int k = keyHolder.getKey().intValue();
  145. return k;
  146. } else {
  147. bindValue.put("id", editId);
  148. sql = " UPDATE `page_details` SET `page_name`=:pageName,`page_code`=:pageCode,`page_json`=:pageJson,`is_enable`=:isEnable," +
  149. "`front_path`=:frontPath,`page_description`=:pageDesc WHERE id=:id";
  150. Integer row = namedParameterJdbcTemplate.update(sql, bindValue);
  151. return row;
  152. }
  153. }
  154. // 添加/编辑数据源数据
  155. public Integer saveDatasource(Map<String, Object> bindValue, String editId) {
  156. String sql = "";
  157. if (editId.length()==0) {
  158. sql = " INSERT INTO `datasource_config` (`datasource_url`,`datasource_code`,`datasource_username`," +
  159. "`datasource_password`,`created_at`) " +
  160. "VALUES (:datasourceUrl,:datasourceCode,:datasourceUsername,:datasourcePassword,:createdAt) ";
  161. KeyHolder keyHolder = new GeneratedKeyHolder();
  162. Integer row = namedParameterJdbcTemplate.update(sql, new MapSqlParameterSource(bindValue), keyHolder);
  163. int k = keyHolder.getKey().intValue();
  164. return k;
  165. } else {
  166. bindValue.put("id", editId);
  167. sql = " UPDATE `datasource_config` SET `datasource_url`=:datasourceUrl,`datasource_code`=:datasourceCode," +
  168. "`datasource_username`=:datasourceUsername,`datasource_password`=:datasourcePassword " +
  169. " WHERE id=:id";
  170. Integer row = namedParameterJdbcTemplate.update(sql, bindValue);
  171. return row;
  172. }
  173. }
  174. // 添加/编辑sql_details表数据
  175. public Integer addSqlDetails(Map<String, Object> bindValue, String editId) {
  176. String sql = "";
  177. if (editId.length()==0) {
  178. sql = " INSERT INTO `sql_details` (`sql_name`,`sql_code`,`sql_string`,`sql_type`,`is_list`," +
  179. "`is_enable`,`created_user`,`created_at`,`sql_description`, `datasource_code`) " +
  180. "VALUES (:sqlName,:sqlCode,:sqlString,:sqlType,:isList,:isEnable,:actionUser,:createdAt, :sqlDesc, :datasourceCode) ";
  181. KeyHolder keyHolder = new GeneratedKeyHolder();
  182. Integer row = namedParameterJdbcTemplate.update(sql, new MapSqlParameterSource(bindValue), keyHolder);
  183. int k = keyHolder.getKey().intValue();
  184. return k;
  185. } else {
  186. bindValue.put("id", editId);
  187. sql = " UPDATE `sql_details` SET `sql_name`=:sqlName,`sql_code`=:sqlCode,`sql_string`=:sqlString,`sql_type`=:sqlType," +
  188. "`is_list`=:isList,`is_enable`=:isEnable,`sql_description`=:sqlDesc,`update_user`=:actionUser,`datasource_code`=:datasourceCode WHERE id=:id";
  189. Integer row = namedParameterJdbcTemplate.update(sql, bindValue);
  190. return row;
  191. }
  192. }
  193. // 添加/编辑api_details表数据
  194. public Integer saveApiDetails(Map<String, Object> bindValue, String editId) {
  195. String sql = "";
  196. if (editId.length()==0) {
  197. sql = " INSERT INTO `api_details` (`api_name`,`api_code`,`api_description`,`is_enable`,`created_at`) " +
  198. "VALUES (:apiName,:apiCode,:apiDesc,:isEnable,:createdAt) ";
  199. KeyHolder keyHolder = new GeneratedKeyHolder();
  200. Integer row = namedParameterJdbcTemplate.update(sql, new MapSqlParameterSource(bindValue), keyHolder);
  201. int k = keyHolder.getKey().intValue();
  202. return k;
  203. } else {
  204. bindValue.put("id", editId);
  205. sql = " UPDATE `api_details` SET `api_name`=:apiName,`api_code`=:apiCode,`api_description`=:apiDesc," +
  206. "`is_enable`=:isEnable WHERE id=:id";
  207. Integer row = namedParameterJdbcTemplate.update(sql, bindValue);
  208. return row;
  209. }
  210. }
  211. // 添加/编辑item_details表数据
  212. public Integer saveItemDetails(Map<String, Object> bindValue, String editId) {
  213. String sql = "";
  214. if (editId.length()==0) {
  215. sql = " INSERT INTO `item_details` (`item_name`,`item_code`,`item_description`,`is_enable`,`created_at`) " +
  216. "VALUES (:itemName,:itemCode,:itemDesc,:isEnable,:createdAt) ";
  217. KeyHolder keyHolder = new GeneratedKeyHolder();
  218. Integer row = namedParameterJdbcTemplate.update(sql, new MapSqlParameterSource(bindValue), keyHolder);
  219. int k = keyHolder.getKey().intValue();
  220. return k;
  221. } else {
  222. bindValue.put("id", editId);
  223. sql = " UPDATE `item_details` SET `item_name`=:itemName,`item_code`=:itemCode,`item_description`=:itemDesc," +
  224. "`is_enable`=:isEnable WHERE id=:id";
  225. Integer row = namedParameterJdbcTemplate.update(sql, bindValue);
  226. return row;
  227. }
  228. }
  229. // Role角色管理-获取总数
  230. public Integer getAllRoleListHasPagingCount(Map bindValue) {
  231. // 获取总数
  232. String countInnerSql = " SELECT * FROM `roma_roles` WHERE 1=1 ";
  233. String countSql = "SELECT COUNT(*) AS `totalData` FROM ( " + countInnerSql + " ) AS ROMA";
  234. Integer count = namedParameterJdbcTemplate.queryForObject(countSql, bindValue, Integer.class);
  235. return count;
  236. }
  237. // Page页面管理-获取带分页的列表数据
  238. public List<Map<String, Object>> getAllRoleListHasPaging(Map bindValue, String page, String perPage, Integer count) {
  239. // 计算分页
  240. String limitAfter = commonUtil.calcPagingString(count, page, perPage);
  241. String listSql = "SELECT * FROM `roma_roles` WHERE 1=1 ORDER BY `id` DESC " + " LIMIT " + limitAfter;
  242. List<Map<String, Object>> resMap2 = namedParameterJdbcTemplate.queryForList(listSql, bindValue);
  243. return resMap2;
  244. }
  245. //获取全部角色
  246. public List<Map<String, Object>> getAllRoleForList(){
  247. Map<String, Object> paramMap = new HashMap<>();
  248. String sql = " SELECT * FROM `roma_roles`";
  249. List<Map<String, Object>> resMap2 = namedParameterJdbcTemplate.queryForList(sql, paramMap);
  250. return resMap2;
  251. }
  252. // 添加用户
  253. public Integer saveUser(Map bindValue, String userRole, String userId) {
  254. if (userId.length() > 0) {
  255. bindValue.put("id", userId);
  256. // 如果是编辑用户
  257. String updateUserInfoSql = " UPDATE `admin_user` SET `admin_name`=:adminName,`admin_avatar`=:apiUploadPic," +
  258. "`is_enable`=:isEnable,`admin_email`=:adminEmail,`admin_phone`=:adminPhone WHERE id=:id ";
  259. Integer row = namedParameterJdbcTemplate.update(updateUserInfoSql, bindValue);
  260. if (row > 0) {
  261. Map<String, Object> delParams = new HashMap<>();
  262. delParams.put("id", userId);
  263. String delRolePermissionSql = " DELETE FROM `roma_role_user` WHERE user_id=:id ";
  264. namedParameterJdbcTemplate.update(delRolePermissionSql, delParams);
  265. if (userRole.length() > 0) {
  266. // 如果添加用户,选择了角色
  267. LinkedHashSet<String> uniqueRole = new LinkedHashSet<String>();
  268. for (String s : userRole.split(",")) {
  269. uniqueRole.add(s);
  270. }
  271. // 循环去重后的数据
  272. String values = "";
  273. for (String val : uniqueRole) {
  274. values += " (" + userId + "," + val + "),";
  275. }
  276. Map addRoleUserMap = new HashMap<>();
  277. values = commonUtil.trimFirstAndLastChar(values, ",");
  278. String insertSql = " INSERT INTO `roma_role_user` (`user_id`, `role_id`) VALUES " + values;
  279. Integer addRoleUserRow = namedParameterJdbcTemplate.update(insertSql, addRoleUserMap);
  280. return addRoleUserRow;
  281. } else {
  282. return row;
  283. }
  284. }
  285. return 0;
  286. } else {
  287. // 如果是添加用户
  288. String sql = " INSERT INTO `admin_user` (`admin_name`,`admin_password`,`created_at`,`admin_avatar`," +
  289. "`is_enable`,`admin_email`,`admin_phone`)" +
  290. " VALUES (:adminName,:adminPassword,:createdAt,:apiUploadPic,:isEnable,:adminEmail,:adminPhone) ";
  291. KeyHolder keyHolder = new GeneratedKeyHolder();
  292. Integer row = namedParameterJdbcTemplate.update(sql, new MapSqlParameterSource(bindValue), keyHolder);
  293. int k = keyHolder.getKey().intValue();
  294. if (userRole.length() > 0) {
  295. // 如果添加用户,选择了角色
  296. LinkedHashSet<String> uniqueRole = new LinkedHashSet<String>();
  297. for (String s : userRole.split(",")) {
  298. uniqueRole.add(s);
  299. }
  300. // 循环去重后的数据
  301. String values = "";
  302. for (String val : uniqueRole) {
  303. values += " (" + k + "," + val + "),";
  304. }
  305. Map addRoleUserMap = new HashMap<>();
  306. values = commonUtil.trimFirstAndLastChar(values, ",");
  307. String insertSql = " INSERT INTO `roma_role_user` (`user_id`, `role_id`) VALUES " + values;
  308. Integer addRoleUserRow = namedParameterJdbcTemplate.update(insertSql, addRoleUserMap);
  309. return addRoleUserRow;
  310. } else {
  311. return k;
  312. }
  313. }
  314. }
  315. // 添加数据到roma_permission表
  316. public Integer savePermission(Map bindValue, String id) {
  317. try {
  318. if (id.length() > 0) {
  319. bindValue.put("id", id);
  320. String updateSql = " UPDATE `roma_permissions` SET `parent_id`=:parentId,`object_type`=:objectType," +
  321. "`object_id`=:objectId,`is_dir`=:isMenu,`permission_sort`=:permissionSort," +
  322. "`permissions_icon`=:permissionsIcon,`is_enable`=:isEnable,`created_at`=:createdAt," +
  323. "`menu_name`=:menuName,`is_visible`=:isVisible,`permission_describe`=:permissionDescribe " +
  324. " WHERE id=:id ";
  325. Integer updateRet = namedParameterJdbcTemplate.update(updateSql, bindValue);
  326. return updateRet;
  327. } else {
  328. String insertAql = " INSERT INTO `roma_permissions` (`parent_id`,`object_type`,`object_id`,`is_dir`," +
  329. "`permission_sort`,`permissions_icon`,`is_enable`,`created_at`,`menu_name`,`is_visible`,`permission_describe`)" +
  330. " VALUES (:parentId,:objectType,:objectId,:isMenu,:permissionSort,:permissionsIcon,:isEnable,:createdAt," +
  331. ":menuName,:isVisible,:permissionDescribe) ";
  332. KeyHolder keyHolder = new GeneratedKeyHolder();
  333. Integer row = namedParameterJdbcTemplate.update(insertAql, new MapSqlParameterSource(bindValue), keyHolder);
  334. int k = keyHolder.getKey().intValue();
  335. return k;
  336. }
  337. }catch (Exception e){
  338. return 0;
  339. }
  340. }
  341. // 删除权限,判断权限是否有子权限
  342. public Boolean hasSonPermissionById(Map bindValue) {
  343. String hasSql = " SELECT * FROM `roma_permissions` WHERE `parent_id`=:id ";
  344. List<Map<String, Object>> resMap2 = namedParameterJdbcTemplate.queryForList(hasSql, bindValue);
  345. if (resMap2 == null || resMap2.size() < 1) {
  346. return true;
  347. }
  348. return false;
  349. }
  350. // 没有被权限使用,则删除基础details表数据
  351. public Integer deletePermissionById(Map bindValue) {
  352. String sql = " DELETE FROM `roma_permissions` WHERE id=:id ";
  353. Integer updateRet = namedParameterJdbcTemplate.update(sql, bindValue);
  354. return updateRet;
  355. }
  356. // 判断基础表数据,是否被权限表引用. 返回true表示没有数据被权限表引用
  357. public Boolean usedPermissionByObjectId(Map bindValue){
  358. String hasUserSql = " SELECT * FROM `roma_permissions` WHERE `object_type`=:objectType AND `object_id`=:objectId ";
  359. List<Map<String, Object>> resMap2 = namedParameterJdbcTemplate.queryForList(hasUserSql, bindValue);
  360. if (resMap2 == null || resMap2.size() < 1) {
  361. return true;
  362. }
  363. return false;
  364. }
  365. // 没有被权限使用,则删除基础details表数据
  366. public Integer deleteDetailsDataByTableNameAndId(Map bindValue, String tableName) {
  367. String sql = " DELETE FROM `"+tableName+"` WHERE id=:id ";
  368. Integer updateRet = namedParameterJdbcTemplate.update(sql, bindValue);
  369. return updateRet;
  370. }
  371. // 判断是否有sql在使用此数据源
  372. public Boolean usedDatasource(Map params){
  373. Map sqlParams = new HashMap<>();
  374. sqlParams.put("datasourceCode", params.get("datasource_code"));
  375. String hasUserSql = " SELECT * FROM `sql_details` WHERE `datasource_code`=:datasourceCode";
  376. List<Map<String, Object>> resMap2 = namedParameterJdbcTemplate.queryForList(hasUserSql, sqlParams);
  377. if (resMap2 == null || resMap2.size() < 1) {
  378. return true;
  379. }
  380. return false;
  381. }
  382. // 通过id删除此数据
  383. public Integer deleteDatasourceById(Map bindValue) {
  384. String sql = " DELETE FROM `datasource_config` WHERE id=:id ";
  385. Integer updateRet = namedParameterJdbcTemplate.update(sql, bindValue);
  386. return updateRet;
  387. }
  388. }