3d47bd892a0d78dcfc83d2643172091cdb165691.svn-base 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. package org.jeecg.modules.system.controller;
  2. import cn.hutool.core.util.CharsetUtil;
  3. import cn.hutool.core.util.HexUtil;
  4. import cn.hutool.crypto.SecureUtil;
  5. import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
  6. import cn.hutool.crypto.symmetric.SymmetricCrypto;
  7. import com.alibaba.fastjson.JSONArray;
  8. import com.alibaba.fastjson.JSONObject;
  9. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  10. import com.baomidou.mybatisplus.core.metadata.IPage;
  11. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  12. import io.swagger.annotations.Api;
  13. import io.swagger.annotations.ApiOperation;
  14. import lombok.extern.slf4j.Slf4j;
  15. import org.apache.commons.lang.StringUtils;
  16. import org.jeecg.common.api.vo.Result;
  17. import org.jeecg.common.aspect.annotation.AutoLog;
  18. import org.jeecg.common.system.base.controller.JeecgController;
  19. import org.jeecg.common.system.query.QueryGenerator;
  20. import org.jeecg.common.util.dynamic.db.DataSourceCachePool;
  21. import org.jeecg.modules.system.entity.SysDataSource;
  22. import org.jeecg.modules.system.service.ISysDataSourceService;
  23. import org.jeecg.modules.system.util.SecurityUtil;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.web.bind.annotation.*;
  26. import org.springframework.web.servlet.ModelAndView;
  27. import javax.servlet.http.HttpServletRequest;
  28. import javax.servlet.http.HttpServletResponse;
  29. import java.util.Arrays;
  30. import java.util.List;
  31. /**
  32. * @Description: 多数据源管理
  33. * @Author: jeecg-boot
  34. * @Date: 2019-12-25
  35. * @Version: V1.0
  36. */
  37. @Slf4j
  38. @Api(tags = "多数据源管理")
  39. @RestController
  40. @RequestMapping("/sys/dataSource")
  41. public class SysDataSourceController extends JeecgController<SysDataSource, ISysDataSourceService> {
  42. @Autowired
  43. private ISysDataSourceService sysDataSourceService;
  44. /**
  45. * 分页列表查询
  46. *
  47. * @param sysDataSource
  48. * @param pageNo
  49. * @param pageSize
  50. * @param req
  51. * @return
  52. */
  53. @AutoLog(value = "多数据源管理-分页列表查询")
  54. @ApiOperation(value = "多数据源管理-分页列表查询", notes = "多数据源管理-分页列表查询")
  55. @GetMapping(value = "/list")
  56. public Result<?> queryPageList(
  57. SysDataSource sysDataSource,
  58. @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
  59. @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
  60. HttpServletRequest req
  61. ) {
  62. QueryWrapper<SysDataSource> queryWrapper = QueryGenerator.initQueryWrapper(sysDataSource, req.getParameterMap());
  63. Page<SysDataSource> page = new Page<>(pageNo, pageSize);
  64. IPage<SysDataSource> pageList = sysDataSourceService.page(page, queryWrapper);
  65. try {
  66. List<SysDataSource> records = pageList.getRecords();
  67. records.forEach(item->{
  68. String dbPassword = item.getDbPassword();
  69. if(StringUtils.isNotBlank(dbPassword)){
  70. String decodedStr = SecurityUtil.jiemi(dbPassword);
  71. item.setDbPassword(decodedStr);
  72. }
  73. });
  74. } catch (Exception e) {
  75. e.printStackTrace();
  76. }
  77. return Result.ok(pageList);
  78. }
  79. @GetMapping(value = "/options")
  80. public Result<?> queryOptions(SysDataSource sysDataSource, HttpServletRequest req) {
  81. QueryWrapper<SysDataSource> queryWrapper = QueryGenerator.initQueryWrapper(sysDataSource, req.getParameterMap());
  82. List<SysDataSource> pageList = sysDataSourceService.list(queryWrapper);
  83. JSONArray array = new JSONArray(pageList.size());
  84. for (SysDataSource item : pageList) {
  85. JSONObject option = new JSONObject(3);
  86. option.put("value", item.getCode());
  87. option.put("label", item.getName());
  88. option.put("text", item.getName());
  89. array.add(option);
  90. }
  91. return Result.ok(array);
  92. }
  93. /**
  94. * 添加
  95. *
  96. * @param sysDataSource
  97. * @return
  98. */
  99. @AutoLog(value = "多数据源管理-添加")
  100. @ApiOperation(value = "多数据源管理-添加", notes = "多数据源管理-添加")
  101. @PostMapping(value = "/add")
  102. public Result<?> add(@RequestBody SysDataSource sysDataSource) {
  103. try {
  104. String dbPassword = sysDataSource.getDbPassword();
  105. if(StringUtils.isNotBlank(dbPassword)){
  106. String encrypt = SecurityUtil.jiami(dbPassword);
  107. sysDataSource.setDbPassword(encrypt);
  108. }
  109. sysDataSourceService.save(sysDataSource);
  110. } catch (Exception e) {
  111. e.printStackTrace();
  112. }
  113. return Result.ok("添加成功!");
  114. }
  115. /**
  116. * 编辑
  117. *
  118. * @param sysDataSource
  119. * @return
  120. */
  121. @AutoLog(value = "多数据源管理-编辑")
  122. @ApiOperation(value = "多数据源管理-编辑", notes = "多数据源管理-编辑")
  123. @PostMapping(value = "/edit")
  124. public Result<?> edit(@RequestBody SysDataSource sysDataSource) {
  125. try {
  126. SysDataSource d = sysDataSourceService.getById(sysDataSource.getId());
  127. DataSourceCachePool.removeCache(d.getCode());
  128. String dbPassword = sysDataSource.getDbPassword();
  129. if(StringUtils.isNotBlank(dbPassword)){
  130. String encrypt = SecurityUtil.jiami(dbPassword);
  131. sysDataSource.setDbPassword(encrypt);
  132. }
  133. sysDataSourceService.updateById(sysDataSource);
  134. } catch (Exception e) {
  135. e.printStackTrace();
  136. }
  137. return Result.ok("编辑成功!");
  138. }
  139. /**
  140. * 通过id删除
  141. *
  142. * @param id
  143. * @return
  144. */
  145. @AutoLog(value = "多数据源管理-通过id删除")
  146. @ApiOperation(value = "多数据源管理-通过id删除", notes = "多数据源管理-通过id删除")
  147. @PostMapping(value = "/delete")
  148. public Result<?> delete(@RequestParam(name = "id") String id) {
  149. SysDataSource sysDataSource = sysDataSourceService.getById(id);
  150. DataSourceCachePool.removeCache(sysDataSource.getCode());
  151. sysDataSourceService.removeById(id);
  152. return Result.ok("删除成功!");
  153. }
  154. /**
  155. * 批量删除
  156. *
  157. * @param ids
  158. * @return
  159. */
  160. @AutoLog(value = "多数据源管理-批量删除")
  161. @ApiOperation(value = "多数据源管理-批量删除", notes = "多数据源管理-批量删除")
  162. @PostMapping(value = "/deleteBatch")
  163. public Result<?> deleteBatch(@RequestParam(name = "ids") String ids) {
  164. List<String> idList = Arrays.asList(ids.split(","));
  165. idList.forEach(item->{
  166. SysDataSource sysDataSource = sysDataSourceService.getById(item);
  167. DataSourceCachePool.removeCache(sysDataSource.getCode());
  168. });
  169. this.sysDataSourceService.removeByIds(idList);
  170. return Result.ok("批量删除成功!");
  171. }
  172. /**
  173. * 通过id查询
  174. *
  175. * @param id
  176. * @return
  177. */
  178. @AutoLog(value = "多数据源管理-通过id查询")
  179. @ApiOperation(value = "多数据源管理-通过id查询", notes = "多数据源管理-通过id查询")
  180. @GetMapping(value = "/queryById")
  181. public Result<?> queryById(@RequestParam(name = "id") String id) {
  182. SysDataSource sysDataSource = sysDataSourceService.getById(id);
  183. return Result.ok(sysDataSource);
  184. }
  185. /**
  186. * 导出excel
  187. *
  188. * @param request
  189. * @param sysDataSource
  190. */
  191. @RequestMapping(value = "/exportXls")
  192. public ModelAndView exportXls(HttpServletRequest request, SysDataSource sysDataSource) {
  193. return super.exportXls(request, sysDataSource, SysDataSource.class, "多数据源管理");
  194. }
  195. /**
  196. * 通过excel导入数据
  197. *
  198. * @param request
  199. * @param response
  200. * @return
  201. */
  202. @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
  203. public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
  204. return super.importExcel(request, response, SysDataSource.class);
  205. }
  206. }