From e459023e11f5b7be2d86662722b70605aee7992b Mon Sep 17 00:00:00 2001 From: nidapeng <jp@doumee.com> Date: 星期二, 30 四月 2024 11:17:46 +0800 Subject: [PATCH] 最新版本 --- server/system_service/src/main/java/com/doumee/api/cloud/SystemDepartmentController.java | 110 ++++ server/system_service/src/main/java/com/doumee/api/cloud/SystemDictDataController.java | 98 ++++ server/system_service/src/main/java/com/doumee/api/cloud/SystemController.java | 50 ++ server/system_service/src/main/java/com/doumee/api/cloud/SystemPositionController.java | 106 ++++ server/system_service/src/main/java/com/doumee/api/cloud/SystemMenuController.java | 101 ++++ server/system_service/src/main/java/com/doumee/api/cloud/SystemRoleController.java | 111 ++++ admin/.env.production | 2 admin/vue.config.js | 13 server/system_service/src/main/java/com/doumee/api/cloud/SystemLoginLogController.java | 47 ++ server/system_service/src/main/java/com/doumee/api/cloud/NoticesController.java | 91 +++ admin/src/api/system/common.js | 20 server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java | 2 server/system_service/src/main/java/com/doumee/api/cloud/SystemPermissionController.java | 92 ++++ server/system_service/src/main/java/com/doumee/api/cloud/SystemDictController.java | 83 +++ admin/.env.development | 1 server/system_service/src/main/java/com/doumee/api/cloud/SystemUserController.java | 140 ++++++ admin/src/views/login.vue | 4 server/system_service/src/main/java/com/doumee/api/BaseController.java | 28 + server/system_service/src/main/java/com/doumee/api/cloud/SystemTraceLogController.java | 46 ++ admin/src/api/system/menu.js | 4 admin/package.json | 4 server/system_service/src/main/java/com/doumee/api/cloud/SystemMonitorController.java | 33 + /dev/null | 2 admin/src/utils/request.js | 7 admin/.env.test | 4 server/system_gateway/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java | 13 server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java | 31 + server/system_gateway/src/main/resources/application.yml | 1 server/system_service/src/main/java/com/doumee/api/cloud/SystemDataPermissionController.java | 109 ++++ 29 files changed, 1,319 insertions(+), 34 deletions(-) diff --git a/admin/.env.development b/admin/.env.development index 313f893..ef1bcb5 100644 --- a/admin/.env.development +++ b/admin/.env.development @@ -1,2 +1,3 @@ # 寮�鍙戠幆澧冮厤缃� NODE_ENV = 'development' +VUE_APP_API_URL = 'http://192.168.0.109:10010' diff --git a/admin/.env.production b/admin/.env.production index dc6dc7f..091b660 100644 --- a/admin/.env.production +++ b/admin/.env.production @@ -1,2 +1,4 @@ # 鐢熶骇鐜閰嶇疆 NODE_ENV = 'production' + +VUE_APP_API_URL = 'http://192.168.0.109:10010' diff --git a/admin/.env.staging b/admin/.env.staging deleted file mode 100644 index bd33547..0000000 --- a/admin/.env.staging +++ /dev/null @@ -1,2 +0,0 @@ -# 娴嬭瘯鐜閰嶇疆 -NODE_ENV = 'production' diff --git a/admin/.env.test b/admin/.env.test new file mode 100644 index 0000000..c45c4ce --- /dev/null +++ b/admin/.env.test @@ -0,0 +1,4 @@ +# 娴嬭瘯鐜閰嶇疆 +NODE_ENV = 'production' + +VUE_APP_API_URL = 'http://192.168.0.109:10010' diff --git a/admin/package.json b/admin/package.json index 8a4a61b..d7e43de 100644 --- a/admin/package.json +++ b/admin/package.json @@ -4,8 +4,8 @@ "private": true, "scripts": { "serve": "vue-cli-service serve", - "build": "vue-cli-service build", - "build:staging": "vue-cli-service build --mode staging", + "build": "vue-cli-service build --mode production", + "build:staging": "vue-cli-service build --mode test", "lint": "vue-cli-service lint", "fix": "eslint --ext .js,.vue src --fix" }, diff --git a/admin/src/api/system/common.js b/admin/src/api/system/common.js index fcd999b..3bf560c 100644 --- a/admin/src/api/system/common.js +++ b/admin/src/api/system/common.js @@ -2,29 +2,29 @@ // 鑾峰彇鍥剧墖楠岃瘉鐮� export function getCaptcha () { - return request.get('/common/captcha') + return request.get('/captcha') } // 鏍规嵁瀵嗙爜鐧诲綍 export function loginByPassword (data) { - return request.post('/system/login', data) + return request.post('/login', data) +} + +// 鑾峰彇宸茬櫥褰曠殑鐢ㄦ埛淇℃伅 +export function getUserInfo () { + return request.get('/getUserInfo', { + autoLogin: false + }) } // 鐧诲嚭 export function logout (data) { - return request.post('/system/logout', data) + return request.post('/logout', data) } // 淇敼瀵嗙爜 export function updatePwd (data) { return request.post('/system/updatePwd', data) -} - -// 鑾峰彇宸茬櫥褰曠殑鐢ㄦ埛淇℃伅 -export function getUserInfo () { - return request.get('/system/getUserInfo', { - autoLogin: false - }) } // 璁垮鏉ヨ閰嶇疆 diff --git a/admin/src/api/system/menu.js b/admin/src/api/system/menu.js index 19f25a0..cb1e05c 100644 --- a/admin/src/api/system/menu.js +++ b/admin/src/api/system/menu.js @@ -36,10 +36,10 @@ // 鏌ヨ鑿滃崟鏍� export function fetchMenuTree () { - return request.get('/system/menu/treeNodes') + return request.get('/visitsAdmin/system/menu/treeNodes') } // 鎺掑簭 export function sort (data) { - return request.post('/system/menu/updateSort', data) + return request.post('/visitsAdmin/system/menu/updateSort', data) } diff --git a/admin/src/utils/request.js b/admin/src/utils/request.js index e73f3ae..19be2e3 100644 --- a/admin/src/utils/request.js +++ b/admin/src/utils/request.js @@ -30,9 +30,9 @@ // 璁剧疆鎿嶄綔骞冲彴 config.headers['eva-platform'] = `pc-${pkg.version}` // 璁剧疆璁よ瘉澶� - const authToken = Cookies.get('eva-auth-token') + const authToken = Cookies.get('dm_user_token') if (authToken != null) { - config.headers['eva-auth-token'] = authToken + config.headers['dm_user_token'] = authToken } return config }, function (error) { @@ -52,7 +52,8 @@ // 鏈櫥褰� if (response.data.code === 401) { if (response.config.autoLogin !== false) { - window.location.href = process.env.VUE_APP_ROUTER_MODE === 'history' ? '/#/login' : '/login' + Cookies.set('dm_user_token','') + window.location.href = process.env.VUE_APP_ROUTER_MODE === 'hash' ? (process.env.VUE_APP_CONTEXT_PATH +'/#/login') : (process.env.VUE_APP_CONTEXT_PATH+'/login') } return Promise.reject(response.data) } diff --git a/admin/src/views/login.vue b/admin/src/views/login.vue index c343084..87b3f52 100644 --- a/admin/src/views/login.vue +++ b/admin/src/views/login.vue @@ -23,6 +23,7 @@ <script> import { mapMutations } from 'vuex' import { getCaptcha, loginByPassword } from '@/api/system/common' +import Cookies from "js-cookie"; export default { name: 'Login', @@ -58,8 +59,9 @@ code: this.captcha.value.trim(), uuid: this.captcha.uuid }) - .then(() => { + .then((res) => { // window.location.href = process.env.VUE_APP_CONTEXT_PATH + Cookies.set('dm_user_token',res) window.location.reload() }) .catch(e => { diff --git a/admin/vue.config.js b/admin/vue.config.js index ef7665f..efad125 100644 --- a/admin/vue.config.js +++ b/admin/vue.config.js @@ -10,18 +10,7 @@ port: 10012, proxy: { [process.env.VUE_APP_API_PREFIX]: { - // http://192.168.0.134:10028 浠诲悍 - // http://192.168.0.110:10013 纾婄 - // http://192.168.0.132:10013 甯呭摜 - // http://192.168.0.176:10028 钀嶅 - // http://192.168.0.186:10028 浠诲悍 - // https://dmtest.ahapp.net/admin_api 娴嬭瘯鏈� - // http://10.10.99.63/admin_interface/ 鏈�鏂版祴璇曟湇锛堝唴缃戯級 - // http://218.23.218.228:8018/admin_interface 鏈�鏂版祴璇曟湇锛堝缃戯級 - // target: 'http://218.23.218.228:8018/admin_interface', - // http://218.23.218.228:9912/admin_interface - // http://facepay.huasunsolar.com/admin_interface - target: 'http://facepay.huasunsolar.com/admin_interface', + target: process.env.VUE_APP_API_URL, changeOrigin: true, pathRewrite: { [`^${[process.env.VUE_APP_API_PREFIX]}`]: '' diff --git a/server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java b/server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java index 2cbb365..7d06475 100644 --- a/server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java +++ b/server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java @@ -10,6 +10,7 @@ import com.doumee.core.model.LoginUserInfo; import com.doumee.core.utils.Constants; import com.doumee.dao.system.dto.LoginDTO; +import com.doumee.service.common.CaptchaService; import com.doumee.service.system.SystemLoginService; import com.doumee.service.system.SystemUserService; import io.swagger.annotations.Api; @@ -39,6 +40,18 @@ @Autowired private SystemLoginService systemLoginService; + @Autowired + private CaptchaService captchaService; + + /** + * @author Eva.Caesar Liu + * @date 2023/03/21 14:49 + */ + @ApiOperation("鑾峰彇鍥剧墖楠岃瘉鐮�") + @GetMapping("/captcha") + public ApiResponse<CaptchaService.Captcha> getCaptcha() { + return ApiResponse.success(captchaService.genCaptcha()); + } @PreventRepeat(limit = 10, lockTime = 10000) @ApiOperation("鐧诲綍") @@ -63,7 +76,7 @@ */ @PostMapping("/refreshtoken") @ApiOperation("鍒锋柊token") - public ApiResponse<String> refreshtoken(@RequestHeader("userToken") String oldToken){ + public ApiResponse<String> refreshtoken(@RequestHeader(Constants.HEADER_USER_TOKEN) String oldToken){ try { if(!jwtTokenUtil.isTokenExpired(oldToken)){ return ApiResponse.success(jwtTokenUtil.refreshToken(oldToken)); @@ -76,6 +89,22 @@ } } + /** + * 鍒锋柊JWT浠ょ墝,鐢ㄦ棫鐨勪护鐗屾崲鏂扮殑浠ょ墝 + */ + @PostMapping("/logout") + @ApiOperation("閫�鍑虹櫥闄�") + public ApiResponse<String> logout(@RequestHeader(Constants.HEADER_USER_TOKEN) String oldToken){ + try { + jwtTokenUtil.logout(oldToken); + }catch (BusinessException e){ + return ApiResponse.failed(e.getCode(),e.getMessage()); + }catch (Exception e){ + return ApiResponse.failed(ResponseStatus.SERVER_ERROR); + } + return ApiResponse.success(null); + + } /** * 鍒锋柊JWT浠ょ墝,鐢ㄦ棫鐨勪护鐗屾崲鏂扮殑浠ょ墝 diff --git a/server/system_gateway/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java b/server/system_gateway/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java index 1faef7c..b4a3835 100644 --- a/server/system_gateway/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java +++ b/server/system_gateway/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java @@ -104,6 +104,19 @@ } return refreshedToken; } + /** + * 閫�鍑虹櫥闄� + * + * @param token 鍘熶护鐗� + * @return 鏂颁护鐗� + */ + public void logout(String token) { + try { + redisTemplate.delete(Constants.REDIS_TOKEN_KEY+token);//鍒犻櫎鑰佺殑token + } catch (Exception e) { + e.printStackTrace(); + } + } /** * 楠岃瘉浠ょ墝 diff --git a/server/system_gateway/src/main/resources/application.yml b/server/system_gateway/src/main/resources/application.yml index 9be4661..dc68829 100644 --- a/server/system_gateway/src/main/resources/application.yml +++ b/server/system_gateway/src/main/resources/application.yml @@ -98,6 +98,7 @@ - /meetingAdmin/** - /visitsAdmin/** - /login + - /captcha - /doc.html - /v2/api-docs/** - /**.js diff --git a/server/system_service/src/main/java/com/doumee/api/BaseController.java b/server/system_service/src/main/java/com/doumee/api/BaseController.java index a390450..61f1a43 100644 --- a/server/system_service/src/main/java/com/doumee/api/BaseController.java +++ b/server/system_service/src/main/java/com/doumee/api/BaseController.java @@ -1,8 +1,15 @@ package com.doumee.api; +import com.alibaba.fastjson.JSONObject; +import com.doumee.core.constants.ResponseStatus; +import com.doumee.core.exception.BusinessException; import com.doumee.core.model.LoginUserInfo; +import com.doumee.core.utils.Constants; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @@ -16,6 +23,8 @@ @Slf4j public class BaseController { + @Autowired + private RedisTemplate<String,Object> stringRedisTemplate; /** * 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛 * @author Eva.Caesar Liu @@ -24,6 +33,25 @@ protected LoginUserInfo getLoginUser () { return (LoginUserInfo)SecurityUtils.getSubject().getPrincipal(); } + /** + * 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛 + * @author Eva.Caesar Liu + * @date 2023/03/21 14:49 + */ + protected LoginUserInfo getLoginUser (String token) { + if (token == null || token.isEmpty()) { + throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鏈櫥褰�"); + } + String userinfo =(String) stringRedisTemplate.opsForValue().get(Constants.REDIS_TOKEN_KEY + token); + if (StringUtils.isBlank(userinfo)) { + throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鏈櫥褰�"); + } + LoginUserInfo user = JSONObject.toJavaObject(JSONObject.parseObject(userinfo),LoginUserInfo.class ); + if(user ==null ){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛鐧婚檰宸插け鏁堬紝璇烽噸鏂扮櫥闄嗭紒"); + } + return user; + } /** diff --git a/server/system_service/src/main/java/com/doumee/api/cloud/NoticesController.java b/server/system_service/src/main/java/com/doumee/api/cloud/NoticesController.java new file mode 100644 index 0000000..6a4c93c --- /dev/null +++ b/server/system_service/src/main/java/com/doumee/api/cloud/NoticesController.java @@ -0,0 +1,91 @@ +package com.doumee.api.cloud; + +import com.doumee.api.BaseController; +import com.doumee.core.annotation.excel.ExcelExporter; +import com.doumee.core.annotation.pr.PreventRepeat; +import com.doumee.core.model.ApiResponse; +import com.doumee.core.model.PageData; +import com.doumee.core.model.PageWrap; +import com.doumee.core.utils.Constants; +import com.doumee.dao.system.model.Notices; +import com.doumee.service.system.NoticesService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.List; +/** + * @author 姹熻箘韫� + * @date 2024/01/16 10:03 + */ +@Api(tags = "绯荤粺娑堟伅淇℃伅琛�") +@RestController +@RequestMapping("/cloudService/business/notices") +public class NoticesController extends BaseController { + + @Autowired + private NoticesService noticesService; + + @PreventRepeat + @ApiOperation("鏂板缓") + @PostMapping("/create") + @RequiresPermissions("business:notices:create") + public ApiResponse create(@RequestBody Notices notices) { + return ApiResponse.success(noticesService.create(notices)); + } + + @ApiOperation("鏍规嵁ID鍒犻櫎") + @GetMapping("/delete/{id}") + @RequiresPermissions("business:notices:delete") + public ApiResponse deleteById(@PathVariable Integer id) { + noticesService.deleteById(id); + return ApiResponse.success(null); + } + + @ApiOperation("鎵归噺鍒犻櫎") + @GetMapping("/delete/batch") + @RequiresPermissions("business:notices:delete") + public ApiResponse deleteByIdInBatch(@RequestParam String ids) { + String [] idArray = ids.split(","); + List<Integer> idList = new ArrayList<>(); + for (String id : idArray) { + idList.add(Integer.valueOf(id)); + } + noticesService.deleteByIdInBatch(idList); + return ApiResponse.success(null); + } + + @ApiOperation("鏍规嵁ID淇敼") + @PostMapping("/updateById") + @RequiresPermissions("business:notices:update") + public ApiResponse updateById(@RequestBody Notices notices) { + noticesService.updateById(notices); + return ApiResponse.success(null); + } + + @ApiOperation("鍒嗛〉鏌ヨ") + @PostMapping("/page") + @RequiresPermissions("business:notices:query") + public ApiResponse<PageData<Notices>> findPage (@RequestBody PageWrap<Notices> pageWrap) { + pageWrap.getModel().setPalt(Constants.ZERO); + return ApiResponse.success(noticesService.findPage(pageWrap)); + } + + @ApiOperation("瀵煎嚭Excel") + @PostMapping("/exportExcel") + @RequiresPermissions("business:notices:exportExcel") + public void exportExcel (@RequestBody PageWrap<Notices> pageWrap, HttpServletResponse response) { + ExcelExporter.build(Notices.class).export(noticesService.findPage(pageWrap).getRecords(), "绯荤粺娑堟伅淇℃伅琛�", response); + } + + @ApiOperation("鏍规嵁ID鏌ヨ") + @GetMapping("/{id}") + @RequiresPermissions("business:notices:query") + public ApiResponse findById(@PathVariable Integer id) { + return ApiResponse.success(noticesService.findById(id)); + } +} diff --git a/server/system_service/src/main/java/com/doumee/api/cloud/SystemController.java b/server/system_service/src/main/java/com/doumee/api/cloud/SystemController.java new file mode 100644 index 0000000..53ca39a --- /dev/null +++ b/server/system_service/src/main/java/com/doumee/api/cloud/SystemController.java @@ -0,0 +1,50 @@ +package com.doumee.api.cloud; + +import com.doumee.api.BaseController; +import com.doumee.biz.system.SystemUserBiz; +import com.doumee.core.annotation.pr.PreventRepeat; +import com.doumee.core.annotation.trace.Trace; +import com.doumee.core.model.ApiResponse; +import com.doumee.core.model.LoginUserInfo; +import com.doumee.core.utils.Constants; +import com.doumee.dao.system.dto.LoginDTO; +import com.doumee.dao.system.dto.UpdatePwdDto; +import com.doumee.service.system.SystemLoginService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.subject.Subject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; + +/** + * @author Eva.Caesar Liu + * @date 2023/03/21 14:49 + */ +@Api(tags = "绯荤粺鍔熻兘") +@Trace(exclude = true) +@Slf4j +@RestController +@RequestMapping("/cloudService/system") +public class SystemController extends BaseController { + + @Autowired + private SystemUserBiz systemUserBiz; + + @Autowired + private SystemLoginService systemLoginService; + + @Trace(withRequestParameters = false) + @ApiOperation("淇敼褰撳墠鐢ㄦ埛瀵嗙爜") + @PostMapping("/updatePwd") + public ApiResponse updatePwd (@RequestHeader(Constants.HEADER_USER_TOKEN) String token, @Validated @RequestBody UpdatePwdDto dto) { + dto.setUserId(this.getLoginUser(token).getId()); + systemUserBiz.updatePwd(dto); + return ApiResponse.success(null); + } + +} diff --git a/server/system_service/src/main/java/com/doumee/api/cloud/SystemDataPermissionController.java b/server/system_service/src/main/java/com/doumee/api/cloud/SystemDataPermissionController.java new file mode 100644 index 0000000..cc5093d --- /dev/null +++ b/server/system_service/src/main/java/com/doumee/api/cloud/SystemDataPermissionController.java @@ -0,0 +1,109 @@ +package com.doumee.api.cloud; + +import com.doumee.api.BaseController; +import com.doumee.biz.system.SystemDataPermissionBiz; +import com.doumee.core.annotation.pr.PreventRepeat; +import com.doumee.core.annotation.trace.Trace; +import com.doumee.core.constants.DataPermissionConstants; +import com.doumee.core.constants.OperaType; +import com.doumee.core.model.ApiResponse; +import com.doumee.core.model.PageData; +import com.doumee.core.model.PageWrap; +import com.doumee.core.utils.Constants; +import com.doumee.dao.system.model.SystemDataPermission; +import com.doumee.dao.system.vo.SystemDataPermissionListVO; +import com.doumee.service.system.SystemDataPermissionService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @author Eva.Caesar Liu + * @date 2023/03/21 14:49 + */ +@RestController +@RequestMapping("/cloudService/system/dataPermission") +@Api(tags = "绯荤粺鏁版嵁鏉冮檺") +public class SystemDataPermissionController extends BaseController { + + @Autowired + private SystemDataPermissionService systemDataPermissionService; + + @Autowired + private SystemDataPermissionBiz systemDataPermissionBiz; + + @PreventRepeat + @ApiOperation("鏂板缓") + @PostMapping("/create") + @RequiresPermissions("system:datapermission:create") + public ApiResponse create(@RequestHeader(Constants.HEADER_USER_TOKEN) String token, @Validated(OperaType.Create.class) @RequestBody SystemDataPermission systemDataPermission) { + systemDataPermission.setCreateUser(this.getLoginUser(token).getId()); + return ApiResponse.success(systemDataPermissionBiz.create(systemDataPermission)); + } + + @ApiOperation("鏍规嵁ID鍒犻櫎") + @GetMapping("/delete/{id}") + @RequiresPermissions("system:datapermission:delete") + public ApiResponse deleteById(@PathVariable Integer id) { + systemDataPermissionService.deleteById(id); + return ApiResponse.success(null); + } + + @ApiOperation("鎵归噺鍒犻櫎") + @GetMapping("/delete/batch") + @RequiresPermissions("system:datapermission:delete") + public ApiResponse deleteByIdInBatch(@RequestParam String ids) { + String [] idArray = ids.split(","); + List<Integer> idList = new ArrayList<>(); + for (String id : idArray) { + idList.add(Integer.valueOf(id)); + } + systemDataPermissionService.deleteByIdInBatch(idList); + return ApiResponse.success(null); + } + + @ApiOperation("淇敼") + @PostMapping("/updateById") + @RequiresPermissions("system:datapermission:update") + public ApiResponse updateById(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@Validated(OperaType.Update.class) @RequestBody SystemDataPermission systemDataPermission) { + systemDataPermission.setCreateUser(this.getLoginUser(token).getId()); + systemDataPermissionBiz.update(systemDataPermission); + return ApiResponse.success(null); + } + + @ApiOperation("淇敼鐘舵��") + @PostMapping("/updateStatus") + @RequiresPermissions("system:datapermission:update") + public ApiResponse updateStatus(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@Validated(OperaType.UpdateStatus.class) @RequestBody SystemDataPermission systemDataPermission) { + systemDataPermission.setCreateUser(this.getLoginUser(token).getId()); + systemDataPermissionBiz.updateStatus(systemDataPermission); + return ApiResponse.success(null); + } + + @ApiOperation("鍒嗛〉鏌ヨ") + @PostMapping("/page") + @RequiresPermissions("system:datapermission:query") + public ApiResponse<PageData<SystemDataPermissionListVO>> findPage (@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@RequestBody PageWrap<SystemDataPermission> pageWrap) { + return ApiResponse.success(systemDataPermissionService.findPage(pageWrap)); + } + + @Trace(exclude = true) + @ApiOperation("鏌ヨ鏁版嵁鏉冮檺绫诲瀷") + @GetMapping("/types") + public ApiResponse<List<Map<String, Object>>> findTypes (@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + return ApiResponse.success(DataPermissionConstants.Type.valueList()); + } + @Trace(exclude = true) + @ApiOperation("鏌ヨ鏁版嵁鏉冮檺妯″潡") + @GetMapping("/modules") + public ApiResponse<List<Map<String, Object>>> findModules (@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + return ApiResponse.success(DataPermissionConstants.Module.valueList()); + } +} diff --git a/server/system_service/src/main/java/com/doumee/api/cloud/SystemDepartmentController.java b/server/system_service/src/main/java/com/doumee/api/cloud/SystemDepartmentController.java new file mode 100644 index 0000000..315a229 --- /dev/null +++ b/server/system_service/src/main/java/com/doumee/api/cloud/SystemDepartmentController.java @@ -0,0 +1,110 @@ +package com.doumee.api.cloud; + +import com.doumee.api.BaseController; +import com.doumee.biz.system.SystemDepartmentBiz; +import com.doumee.core.annotation.pr.PreventRepeat; +import com.doumee.core.annotation.trace.Trace; +import com.doumee.core.constants.OperaType; +import com.doumee.core.model.ApiResponse; +import com.doumee.core.model.PageData; +import com.doumee.core.model.PageWrap; +import com.doumee.core.utils.Constants; +import com.doumee.dao.system.dto.QuerySystemUserDTO; +import com.doumee.dao.system.model.SystemDepartment; +import com.doumee.dao.system.vo.SystemDepartmentListVO; +import com.doumee.dao.system.vo.SystemUserListVO; +import com.doumee.service.system.SystemUserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Eva.Caesar Liu + * @date 2023/03/21 14:49 + */ +@Api(tags = "閮ㄩ棬") +@RestController +@RequestMapping("/cloudService/system/department") +public class SystemDepartmentController extends BaseController { + + @Autowired + private SystemDepartmentBiz systemDepartmentBiz; + + @Autowired + private SystemUserService systemUserService; + + @PreventRepeat + @ApiOperation("鏂板缓") + @PostMapping("/create") + @RequiresPermissions("system:department:create") + public ApiResponse create(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@Validated(OperaType.Create.class) @RequestBody SystemDepartment systemDepartment) { + systemDepartment.setCreateUser(getLoginUser().getId()); + systemDepartment.setUpdateUser(getLoginUser().getId()); + return ApiResponse.success(systemDepartmentBiz.create(systemDepartment)); + } + + @ApiOperation("鍒犻櫎") + @GetMapping("/delete/{id}") + @RequiresPermissions("system:department:delete") + public ApiResponse deleteById(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@PathVariable Integer id) { + systemDepartmentBiz.deleteById(id); + return ApiResponse.success(null); + } + + @ApiOperation("鎵归噺鍒犻櫎") + @GetMapping("/delete/batch") + @PreventRepeat + @RequiresPermissions("system:department:delete") + public ApiResponse deleteByIdInBatch(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@RequestParam String ids) { + String [] idArray = ids.split(","); + List<Integer> idList = new ArrayList<>(); + for (String id : idArray) { + idList.add(Integer.valueOf(id)); + } + systemDepartmentBiz.deleteByIdInBatch(idList); + return ApiResponse.success(null); + } + + @ApiOperation("淇敼") + @PostMapping("/updateById") + @RequiresPermissions("system:department:update") + public ApiResponse updateById(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@Validated(OperaType.Update.class) @RequestBody SystemDepartment systemDepartment) { + systemDepartment.setCreateUser(getLoginUser().getId()); + systemDepartment.setUpdateUser(getLoginUser().getId()); + systemDepartmentBiz.updateById(systemDepartment); + return ApiResponse.success(null); + } + + @ApiOperation("鏌ヨ閮ㄩ棬鍒楄〃") + @PostMapping("/tree") + @RequiresPermissions("system:department:query") + public ApiResponse<List<SystemDepartmentListVO>> findTree (@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + return ApiResponse.success(systemDepartmentBiz.findTree()); + } + + @ApiOperation("鏌ヨ閮ㄩ棬鍒楄〃鍙婇儴闂ㄤ笅鐨勪汉鍛�") + @GetMapping("/findTreeUser") + @RequiresPermissions("system:department:query") + @ApiImplicitParams({ + @ApiImplicitParam(name = "parentId", value = "parentId", paramType = "query", dataType = "Integer"), + }) + public ApiResponse<SystemDepartmentListVO> findTreeUser(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,Integer parentId) { + return ApiResponse.success(systemDepartmentBiz.findTreeUser(parentId)); + } + + @Trace(exclude = true) + @ApiOperation("鏌ヨ閮ㄩ棬浜哄憳") + @PostMapping("/users") + @RequiresPermissions("system:department:queryUsers") + public ApiResponse<PageData<SystemUserListVO>> findPage (@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@RequestBody PageWrap<QuerySystemUserDTO> pageWrap) { + return ApiResponse.success(systemUserService.findPage(pageWrap)); + } +} diff --git a/server/system_service/src/main/java/com/doumee/api/cloud/SystemDictController.java b/server/system_service/src/main/java/com/doumee/api/cloud/SystemDictController.java new file mode 100644 index 0000000..57c8f99 --- /dev/null +++ b/server/system_service/src/main/java/com/doumee/api/cloud/SystemDictController.java @@ -0,0 +1,83 @@ +package com.doumee.api.cloud; + +import com.doumee.api.BaseController; +import com.doumee.biz.system.SystemDictBiz; +import com.doumee.core.annotation.pr.PreventRepeat; +import com.doumee.core.constants.OperaType; +import com.doumee.core.model.ApiResponse; +import com.doumee.core.model.PageData; +import com.doumee.core.model.PageWrap; +import com.doumee.core.utils.Constants; +import com.doumee.dao.system.dto.QuerySystemDictDTO; +import com.doumee.dao.system.model.SystemDict; +import com.doumee.dao.system.vo.SystemDictListVO; +import com.doumee.service.system.SystemDictService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Eva.Caesar Liu + * @date 2023/03/21 14:49 + */ +@Api(tags = "绯荤粺瀛楀吀") +@RestController +@RequestMapping("/cloudService/system/dict") +public class SystemDictController extends BaseController { + + @Autowired + private SystemDictService systemDictService; + + @Autowired + private SystemDictBiz systemDictBiz; + + @PreventRepeat + @ApiOperation("鏂板缓") + @PostMapping("/create") + @RequiresPermissions("system:dict:create") + public ApiResponse create(@RequestHeader(Constants.HEADER_USER_TOKEN) String token, @Validated(OperaType.Create.class) @RequestBody SystemDict systemDict) { + return ApiResponse.success(systemDictBiz.create(systemDict)); + } + + @ApiOperation("鍒犻櫎") + @GetMapping("/delete/{id}") + @RequiresPermissions("system:dict:delete") + public ApiResponse deleteById(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@PathVariable Integer id) { + systemDictService.deleteById(id); + return ApiResponse.success(null); + } + + @ApiOperation("鎵归噺鍒犻櫎") + @GetMapping("/delete/batch") + @RequiresPermissions("system:dict:delete") + public ApiResponse deleteByIdInBatch(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@RequestParam String ids) { + String [] idArray = ids.split(","); + List<Integer> idList = new ArrayList<>(); + for (String id : idArray) { + idList.add(Integer.valueOf(id)); + } + systemDictService.deleteByIdInBatch(idList); + return ApiResponse.success(null); + } + + @ApiOperation("淇敼") + @PostMapping("/updateById") + @RequiresPermissions("system:dict:update") + public ApiResponse updateById(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@Validated(OperaType.Update.class) @RequestBody SystemDict systemDict) { + systemDictBiz.updateById(systemDict); + return ApiResponse.success(null); + } + + @ApiOperation("鍒嗛〉鏌ヨ") + @PostMapping("/page") + @RequiresPermissions("system:dict:query") + public ApiResponse<PageData<SystemDictListVO>> findPage (@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@RequestBody PageWrap<QuerySystemDictDTO> pageWrap) { + return ApiResponse.success(systemDictService.findPage(pageWrap)); + } +} diff --git a/server/system_service/src/main/java/com/doumee/api/cloud/SystemDictDataController.java b/server/system_service/src/main/java/com/doumee/api/cloud/SystemDictDataController.java new file mode 100644 index 0000000..9adc371 --- /dev/null +++ b/server/system_service/src/main/java/com/doumee/api/cloud/SystemDictDataController.java @@ -0,0 +1,98 @@ +package com.doumee.api.cloud; + +import com.doumee.api.BaseController; +import com.doumee.biz.system.SystemDictDataBiz; +import com.doumee.core.annotation.pr.PreventRepeat; +import com.doumee.core.constants.OperaType; +import com.doumee.core.model.ApiResponse; +import com.doumee.core.model.PageData; +import com.doumee.core.model.PageWrap; +import com.doumee.core.utils.Constants; +import com.doumee.dao.system.dto.QuerySystemDictDataDTO; +import com.doumee.dao.system.model.SystemDictData; +import com.doumee.dao.system.vo.SystemDictDataListVO; +import com.doumee.service.system.SystemDictDataService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Eva.Caesar Liu + * @date 2023/03/21 14:49 + */ +@Api(tags = "瀛楀吀鏁版嵁") +@RestController +@RequestMapping("/cloudService/system/dictData") +public class SystemDictDataController extends BaseController { + + @Autowired + private SystemDictDataService systemDictDataService; + + @Autowired + private SystemDictDataBiz systemDictDataBiz; + + @PreventRepeat + @ApiOperation("鏂板缓") + @PostMapping("/create") + @RequiresPermissions("system:dict:update") + public ApiResponse create(@RequestHeader(Constants.HEADER_USER_TOKEN) String token, @Validated(OperaType.Create.class) @RequestBody SystemDictData systemDictData) { + return ApiResponse.success(systemDictDataBiz.create(systemDictData)); + } + + @ApiOperation("鍒犻櫎") + @GetMapping("/delete/{id}") + @RequiresPermissions("system:dict:update") + public ApiResponse deleteById(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@PathVariable Integer id) { + systemDictDataService.deleteById(id); + return ApiResponse.success(null); + } + + @ApiOperation("鎵归噺鍒犻櫎") + @GetMapping("/delete/batch") + @RequiresPermissions("system:dict:delete") + public ApiResponse deleteByIdInBatch(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@RequestParam String ids) { + String [] idArray = ids.split(","); + List<Integer> idList = new ArrayList<>(); + for (String id : idArray) { + idList.add(Integer.valueOf(id)); + } + systemDictDataService.deleteByIdInBatch(idList); + return ApiResponse.success(null); + } + + @ApiOperation("淇敼") + @PostMapping("/updateById") + @RequiresPermissions("system:dict:update") + public ApiResponse updateById(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@Validated(OperaType.Update.class) @RequestBody SystemDictData systemDictData) { + systemDictDataBiz.updateById(systemDictData); + return ApiResponse.success(null); + } + + @ApiOperation("鍒嗛〉鏌ヨ") + @PostMapping("/page") + @RequiresPermissions("system:dict:update") + public ApiResponse<PageData<SystemDictDataListVO>> findPage (@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@RequestBody PageWrap<QuerySystemDictDataDTO> pageWrap) { + return ApiResponse.success(systemDictDataService.findPage(pageWrap)); + } + + + @ApiOperation(value = "鏌ヨ瀛楀吀鍊兼暟鎹�" ) + @GetMapping("/getSystemDictData") + @ApiImplicitParams({ + @ApiImplicitParam(paramType = "query", dataType = "String", name = "label", value = "鏁版嵁瀛楀吀鍊糎5_LINK_ADDR", required = true), + @ApiImplicitParam(paramType = "query", dataType = "String", name = "dictCode", value = "绯荤粺瀛楀吀鍊糞YSTEM", required = true) + }) + public ApiResponse<SystemDictData> getSystemDictData(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@RequestParam String dictCode, @RequestParam String label) { + return ApiResponse.success(systemDictDataBiz.queryByCode(dictCode,label)); + } + + +} diff --git a/server/system_service/src/main/java/com/doumee/api/cloud/SystemLoginLogController.java b/server/system_service/src/main/java/com/doumee/api/cloud/SystemLoginLogController.java new file mode 100644 index 0000000..b84ba28 --- /dev/null +++ b/server/system_service/src/main/java/com/doumee/api/cloud/SystemLoginLogController.java @@ -0,0 +1,47 @@ +package com.doumee.api.cloud; + +import com.doumee.api.BaseController; +import com.doumee.core.annotation.excel.ExcelExporter; +import com.doumee.core.model.ApiResponse; +import com.doumee.core.model.PageData; +import com.doumee.core.model.PageWrap; +import com.doumee.dao.system.dto.QuerySystemLoginLogDTO; +import com.doumee.dao.system.model.SystemLoginLog; +import com.doumee.service.system.SystemLoginLogService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; + +/** + * @author Eva.Caesar Liu + * @date 2023/03/21 14:49 + */ +@RestController +@RequestMapping("/cloudService/system/loginLog") +@Api(tags = "鐧诲綍鏃ュ織") +public class SystemLoginLogController extends BaseController { + + @Autowired + private SystemLoginLogService systemLoginLogService; + + @PostMapping("/page") + @ApiOperation("鍒嗛〉鏌ヨ") + @RequiresPermissions("system:loginLog:query") + public ApiResponse<PageData<SystemLoginLog>> findPage (@RequestBody PageWrap<QuerySystemLoginLogDTO> pageWrap) { + return ApiResponse.success(systemLoginLogService.findPage(pageWrap)); + } + + @PostMapping("/exportExcel") + @ApiOperation("瀵煎嚭Excel") + @RequiresPermissions("system:loginLog:query") + public void export (@RequestBody PageWrap<QuerySystemLoginLogDTO> pageWrap, HttpServletResponse response) { + ExcelExporter.build(SystemLoginLog.class).export(systemLoginLogService.findPage(pageWrap).getRecords(), "鐧诲綍鏃ュ織", response); + } +} diff --git a/server/system_service/src/main/java/com/doumee/api/cloud/SystemMenuController.java b/server/system_service/src/main/java/com/doumee/api/cloud/SystemMenuController.java new file mode 100644 index 0000000..538915f --- /dev/null +++ b/server/system_service/src/main/java/com/doumee/api/cloud/SystemMenuController.java @@ -0,0 +1,101 @@ +package com.doumee.api.cloud; + +import com.doumee.api.BaseController; +import com.doumee.biz.system.SystemMenuBiz; +import com.doumee.core.annotation.pr.PreventRepeat; +import com.doumee.core.constants.OperaType; +import com.doumee.core.model.ApiResponse; +import com.doumee.core.utils.Constants; +import com.doumee.dao.system.dto.UpdateSystemMenuSortDTO; +import com.doumee.dao.system.model.SystemMenu; +import com.doumee.dao.system.vo.SystemMenuListVO; +import com.doumee.dao.system.vo.SystemMenuNodeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Eva.Caesar Liu + * @date 2023/03/21 14:49 + */ +@Api(tags = "绯荤粺鑿滃崟") +@RestController +@RequestMapping("/cloudService/system/menu") +public class SystemMenuController extends BaseController { + + @Autowired + private SystemMenuBiz systemMenuBiz; + + @ApiOperation("鑿滃崟鎺掑簭") + @PostMapping("/updateSort") + @RequiresPermissions("system:menu:sort") + public ApiResponse updateSort (@RequestHeader(Constants.HEADER_USER_TOKEN) String token, @Validated @RequestBody UpdateSystemMenuSortDTO dto) { + systemMenuBiz.updateSort(dto); + return ApiResponse.success(null); + } + + @ApiOperation("鏌ヨ鑿滃崟鏍�") + @GetMapping("/treeNodes") + public ApiResponse<List<SystemMenuNodeVO>> getTreeMenu (@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + return ApiResponse.success(systemMenuBiz.findTree(this.getLoginUser().getId())); + } + + @ApiOperation("鏌ヨ鍒楄〃鏍�") + @PostMapping("/treeList") + @RequiresPermissions("system:menu:query") + public ApiResponse<List<SystemMenuListVO>> findTree (@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + return ApiResponse.success(systemMenuBiz.findTree()); + } + + @PreventRepeat + @ApiOperation("鏂板缓") + @PostMapping("/create") + @RequiresPermissions("system:menu:create") + public ApiResponse create(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@Validated(OperaType.Create.class) @RequestBody SystemMenu systemMenu) { + return ApiResponse.success(systemMenuBiz.create(systemMenu)); + } + + @ApiOperation("鍒犻櫎") + @GetMapping("/delete/{id}") + @RequiresPermissions("system:menu:delete") + public ApiResponse deleteById(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@PathVariable Integer id) { + systemMenuBiz.deleteById(id); + return ApiResponse.success(null); + } + + @ApiOperation("鎵归噺鍒犻櫎") + @GetMapping("/delete/batch") + @RequiresPermissions("system:menu:delete") + public ApiResponse deleteByIdInBatch(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@RequestParam String ids) { + String [] idArray = ids.split(","); + List<Integer> idList = new ArrayList<>(); + for (String id : idArray) { + idList.add(Integer.valueOf(id)); + } + systemMenuBiz.deleteByIdInBatch(idList); + return ApiResponse.success(null); + } + + @ApiOperation("淇敼") + @PostMapping("/updateById") + @RequiresPermissions("system:menu:update") + public ApiResponse updateById(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@Validated(OperaType.Update.class) @RequestBody SystemMenu systemMenu) { + systemMenuBiz.updateById(systemMenu); + return ApiResponse.success(null); + } + + @ApiOperation("淇敼鑿滃崟鐘舵��") + @PostMapping("/updateStatus") + @RequiresPermissions("system:menu:update") + public ApiResponse updateStatus(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@Validated(OperaType.UpdateStatus.class) @RequestBody SystemMenu systemMenu) { + systemMenuBiz.updateById(systemMenu); + return ApiResponse.success(null); + } + +} diff --git a/server/system_service/src/main/java/com/doumee/api/cloud/SystemMonitorController.java b/server/system_service/src/main/java/com/doumee/api/cloud/SystemMonitorController.java new file mode 100644 index 0000000..14c123d --- /dev/null +++ b/server/system_service/src/main/java/com/doumee/api/cloud/SystemMonitorController.java @@ -0,0 +1,33 @@ +package com.doumee.api.cloud; + +import com.doumee.api.BaseController; +import com.doumee.core.annotation.trace.Trace; +import com.doumee.core.model.ApiResponse; +import com.doumee.core.utils.Constants; +import com.doumee.core.utils.Monitor; +import com.doumee.core.utils.Utils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author Eva.Caesar Liu + * @date 2023/03/21 14:49 + */ +@Api(tags = "绯荤粺鐩戝惉") +@Trace(exclude = true) +@RestController +@RequestMapping("/cloudService/system/monitor") +public class SystemMonitorController extends BaseController { + + @ApiOperation("鑾峰彇绯荤粺淇℃伅") + @GetMapping("/getSystemInfo") + @RequiresPermissions("system:monitor:query") + public ApiResponse<Monitor> getSystemInfo (@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + return ApiResponse.success(Utils.Monitor.current()); + } +} diff --git a/server/system_service/src/main/java/com/doumee/api/cloud/SystemPermissionController.java b/server/system_service/src/main/java/com/doumee/api/cloud/SystemPermissionController.java new file mode 100644 index 0000000..341f835 --- /dev/null +++ b/server/system_service/src/main/java/com/doumee/api/cloud/SystemPermissionController.java @@ -0,0 +1,92 @@ +package com.doumee.api.cloud; + +import com.doumee.api.BaseController; +import com.doumee.biz.system.SystemPermissionBiz; +import com.doumee.core.annotation.pr.PreventRepeat; +import com.doumee.core.constants.OperaType; +import com.doumee.core.model.ApiResponse; +import com.doumee.core.model.PageData; +import com.doumee.core.model.PageWrap; +import com.doumee.core.utils.Constants; +import com.doumee.dao.system.dto.QuerySystemPermissionDTO; +import com.doumee.dao.system.model.SystemPermission; +import com.doumee.dao.system.vo.SystemPermissionListVO; +import com.doumee.service.system.SystemPermissionService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Eva.Caesar Liu + * @date 2023/03/21 14:49 + */ +@Api(tags = "绯荤粺鏉冮檺") +@RestController +@RequestMapping("/cloudService/system/permission") +public class SystemPermissionController extends BaseController { + + @Autowired + private SystemPermissionService systemPermissionService; + + @Autowired + private SystemPermissionBiz systemPermissionBiz; + + @PreventRepeat + @ApiOperation("鏂板缓") + @PostMapping("/create") + @RequiresPermissions("system:permission:create") + public ApiResponse create(@RequestHeader(Constants.HEADER_USER_TOKEN) String token, @Validated(OperaType.Create.class) @RequestBody SystemPermission systemPermission) { + return ApiResponse.success(systemPermissionBiz.create(systemPermission)); + } + + @ApiOperation("鍒犻櫎") + @GetMapping("/delete/{id}") + @RequiresPermissions("system:permission:delete") + public ApiResponse deleteById(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@PathVariable Integer id) { + systemPermissionBiz.deleteById(id); + return ApiResponse.success(null); + } + + @ApiOperation("鎵归噺鍒犻櫎") + @GetMapping("/delete/batch") + @RequiresPermissions("system:permission:delete") + public ApiResponse deleteByIdInBatch(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@RequestParam String ids) { + String [] idArray = ids.split(","); + List<Integer> idList = new ArrayList<>(); + for (String id : idArray) { + idList.add(Integer.valueOf(id)); + } + systemPermissionBiz.deleteByIdInBatch(idList); + return ApiResponse.success(null); + } + + @ApiOperation("淇敼") + @PostMapping("/updateById") + @RequiresPermissions("system:permission:update") + public ApiResponse updateById(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@Validated(OperaType.Update.class) @RequestBody SystemPermission systemPermission) { + systemPermissionBiz.updateById(systemPermission); + return ApiResponse.success(null); + } + + @ApiOperation("鍒嗛〉鏌ヨ") + @PostMapping("/page") + @RequiresPermissions("system:permission:query") + public ApiResponse<PageData<SystemPermissionListVO>> findPage (@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@RequestBody PageWrap<QuerySystemPermissionDTO> pageWrap) { + return ApiResponse.success(systemPermissionService.findPage(pageWrap)); + } + + @ApiOperation("鏌ヨ鎵�鏈�") + @GetMapping("/all") + @RequiresPermissions("system:permission:query") + public ApiResponse<List<SystemPermission>> findAll (@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + SystemPermission systemPermission = new SystemPermission(); + systemPermission.setDeleted(Boolean.FALSE); + return ApiResponse.success(systemPermissionService.findList(systemPermission)); + } +} diff --git a/server/system_service/src/main/java/com/doumee/api/cloud/SystemPositionController.java b/server/system_service/src/main/java/com/doumee/api/cloud/SystemPositionController.java new file mode 100644 index 0000000..c79f312 --- /dev/null +++ b/server/system_service/src/main/java/com/doumee/api/cloud/SystemPositionController.java @@ -0,0 +1,106 @@ +package com.doumee.api.cloud; + +import com.doumee.api.BaseController; +import com.doumee.biz.system.SystemPositionBiz; +import com.doumee.core.annotation.pr.PreventRepeat; +import com.doumee.core.annotation.trace.Trace; +import com.doumee.core.constants.OperaType; +import com.doumee.core.model.ApiResponse; +import com.doumee.core.model.PageData; +import com.doumee.core.model.PageWrap; +import com.doumee.core.utils.Constants; +import com.doumee.dao.system.dto.QuerySystemUserDTO; +import com.doumee.dao.system.model.SystemPosition; +import com.doumee.dao.system.vo.SystemPositionListVO; +import com.doumee.dao.system.vo.SystemUserListVO; +import com.doumee.service.system.SystemPositionService; +import com.doumee.service.system.SystemUserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; +/** + * 宀椾綅鎺ュ彛 + * @author Eva.Caesar Liu + * @date 2023/03/21 14:49 + */ +@Api(tags = "宀椾綅") +@RestController +@RequestMapping("/cloudService/system/position") +public class SystemPositionController extends BaseController { + + @Autowired + private SystemPositionService systemPositionService; + + @Autowired + private SystemPositionBiz systemPositionBiz; + + @Autowired + private SystemUserService systemUserService; + + @PreventRepeat + @ApiOperation("鏂板缓") + @PostMapping("/create") + @RequiresPermissions("system:position:create") + public ApiResponse create(@RequestHeader(Constants.HEADER_USER_TOKEN) String token, @Validated(OperaType.Create.class) @RequestBody SystemPosition systemPosition) { + return ApiResponse.success(systemPositionBiz.create(systemPosition)); + } + + @ApiOperation("鍒犻櫎") + @GetMapping("/delete/{id}") + @RequiresPermissions("system:position:delete") + public ApiResponse deleteById(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@PathVariable Integer id) { + systemPositionBiz.deleteById(id); + return ApiResponse.success(null); + } + + @ApiOperation("鎵归噺鍒犻櫎") + @GetMapping("/delete/batch") + @RequiresPermissions("system:position:delete") + public ApiResponse deleteByIdInBatch(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@RequestParam String ids) { + String [] idArray = ids.split(","); + List<Integer> idList = new ArrayList<>(); + for (String id : idArray) { + idList.add(Integer.valueOf(id)); + } + systemPositionBiz.deleteByIdInBatch(idList); + return ApiResponse.success(null); + } + + @ApiOperation("淇敼") + @PostMapping("/updateById") + @RequiresPermissions("system:position:update") + public ApiResponse updateById(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@Validated(OperaType.Update.class) @RequestBody SystemPosition systemPosition) { + systemPositionBiz.updateById(systemPosition); + return ApiResponse.success(null); + } + + @ApiOperation("鏌ヨ宀椾綅鏍戝垪琛�") + @PostMapping("/tree") + @RequiresPermissions("system:position:query") + public ApiResponse<List<SystemPositionListVO>> findTree (@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + return ApiResponse.success(systemPositionBiz.findTree()); + } + + @ApiOperation("鏌ヨ宀椾綅鍒楄〃") + @PostMapping("/all") + @RequiresPermissions("system:position:query") + public ApiResponse<List<SystemPosition>> findList (@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + SystemPosition systemPosition = new SystemPosition(); + systemPosition.setDeleted(Boolean.FALSE); + return ApiResponse.success(systemPositionService.findList(systemPosition)); + } + + @Trace(exclude = true) + @ApiOperation("鏌ヨ宀椾綅浜哄憳") + @PostMapping("/users") + @RequiresPermissions("system:position:queryUsers") + public ApiResponse<PageData<SystemUserListVO>> findPage (@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@RequestBody PageWrap<QuerySystemUserDTO> pageWrap) { + return ApiResponse.success(systemUserService.findPage(pageWrap)); + } +} diff --git a/server/system_service/src/main/java/com/doumee/api/cloud/SystemRoleController.java b/server/system_service/src/main/java/com/doumee/api/cloud/SystemRoleController.java new file mode 100644 index 0000000..9a89915 --- /dev/null +++ b/server/system_service/src/main/java/com/doumee/api/cloud/SystemRoleController.java @@ -0,0 +1,111 @@ +package com.doumee.api.cloud; + +import com.doumee.api.BaseController; +import com.doumee.biz.system.SystemRoleBiz; +import com.doumee.core.annotation.pr.PreventRepeat; +import com.doumee.core.constants.OperaType; +import com.doumee.core.model.ApiResponse; +import com.doumee.core.model.PageData; +import com.doumee.core.model.PageWrap; +import com.doumee.core.utils.Constants; +import com.doumee.dao.system.dto.CreateRoleMenuDTO; +import com.doumee.dao.system.dto.CreateRolePermissionDTO; +import com.doumee.dao.system.dto.QuerySystemRoleDTO; +import com.doumee.dao.system.model.SystemRole; +import com.doumee.dao.system.vo.SystemRoleListVO; +import com.doumee.service.system.SystemRoleService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; +/** + * @author Eva.Caesar Liu + * @date 2023/03/21 14:49 + */ +@Api(tags = "绯荤粺瑙掕壊") +@RestController +@RequestMapping("/cloudService/system/role") +public class SystemRoleController extends BaseController { + + @Autowired + private SystemRoleService systemRoleService; + + @Autowired + private SystemRoleBiz systemRoleBiz; + + @PreventRepeat + @ApiOperation("閰嶇疆瑙掕壊鑿滃崟") + @PostMapping("/createRoleMenu") + @RequiresPermissions("system:role:createRoleMenu") + public ApiResponse createRoleMenu (@RequestHeader(Constants.HEADER_USER_TOKEN) String token, @Validated @RequestBody CreateRoleMenuDTO dto) { + systemRoleBiz.createRoleMenu(dto); + return ApiResponse.success(null); + } + + @PreventRepeat + @ApiOperation("閰嶇疆瑙掕壊鏉冮檺") + @PostMapping("/createRolePermission") + @RequiresPermissions("system:role:createRolePermission") + public ApiResponse createRolePermission (@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@Validated @RequestBody CreateRolePermissionDTO dto) { + systemRoleBiz.createRolePermission(dto); + return ApiResponse.success(null); + } + + @PreventRepeat + @ApiOperation("鏂板缓") + @PostMapping("/create") + @RequiresPermissions("system:role:create") + public ApiResponse create(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@Validated(OperaType.Create.class) @RequestBody SystemRole systemRole) { + return ApiResponse.success(systemRoleBiz.create(systemRole)); + } + + @ApiOperation("鍒犻櫎") + @GetMapping("/delete/{id}") + @RequiresPermissions("system:role:delete") + public ApiResponse deleteById(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@PathVariable Integer id) { + systemRoleBiz.deleteById(id); + return ApiResponse.success(null); + } + + @ApiOperation("鎵归噺鍒犻櫎") + @GetMapping("/delete/batch") + @RequiresPermissions("system:role:delete") + public ApiResponse deleteByIdInBatch(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@RequestParam String ids) { + String [] idArray = ids.split(","); + List<Integer> idList = new ArrayList<>(); + for (String id : idArray) { + idList.add(Integer.valueOf(id)); + } + systemRoleBiz.deleteByIdInBatch(idList); + return ApiResponse.success(null); + } + + @ApiOperation("淇敼") + @PostMapping("/updateById") + @RequiresPermissions("system:role:update") + public ApiResponse updateById(@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@Validated(OperaType.Update.class) @RequestBody SystemRole systemRole) { + systemRoleBiz.updateById(systemRole); + return ApiResponse.success(null); + } + + @ApiOperation("鍒嗛〉鏌ヨ") + @PostMapping("/page") + @RequiresPermissions("system:role:query") + public ApiResponse<PageData<SystemRoleListVO>> findPage (@RequestHeader(Constants.HEADER_USER_TOKEN) String token,@RequestBody PageWrap<QuerySystemRoleDTO> pageWrap) { + return ApiResponse.success(systemRoleService.findPage(pageWrap)); + } + + @ApiOperation("鏌ヨ鎵�鏈�") + @GetMapping("/all") + @RequiresPermissions("system:role:query") + public ApiResponse<List<SystemRole>> findAll (@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + SystemRole systemRole = new SystemRole(); + systemRole.setDeleted(Boolean.FALSE); + return ApiResponse.success(systemRoleService.findList(systemRole)); + } +} diff --git a/server/system_service/src/main/java/com/doumee/api/cloud/SystemTraceLogController.java b/server/system_service/src/main/java/com/doumee/api/cloud/SystemTraceLogController.java new file mode 100644 index 0000000..3931748 --- /dev/null +++ b/server/system_service/src/main/java/com/doumee/api/cloud/SystemTraceLogController.java @@ -0,0 +1,46 @@ +package com.doumee.api.cloud; + +import com.doumee.api.BaseController; +import com.doumee.core.annotation.excel.ExcelExporter; +import com.doumee.core.model.ApiResponse; +import com.doumee.core.model.PageWrap; +import com.doumee.dao.system.dto.QuerySystemTraceLogDTO; +import com.doumee.dao.system.model.SystemTraceLog; +import com.doumee.service.system.SystemTraceLogService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; + +/** + * @author Eva.Caesar Liu + * @date 2023/03/21 14:49 + */ +@Api(tags = "璺熻釜鏃ュ織") +@RestController +@RequestMapping("/cloudService/system/traceLog") +public class SystemTraceLogController extends BaseController { + + @Autowired + private SystemTraceLogService systemTraceLogService; + + @ApiOperation("鍒嗛〉鏌ヨ") + @PostMapping("/page") + @RequiresPermissions("system:traceLog:query") + public ApiResponse findPage (@RequestBody PageWrap<QuerySystemTraceLogDTO> pageWrap) { + return ApiResponse.success(systemTraceLogService.findPage(pageWrap)); + } + + @ApiOperation("瀵煎嚭Excel") + @PostMapping("/exportExcel") + @RequiresPermissions("system:traceLog:query") + public void exportExcel (@RequestBody PageWrap<QuerySystemTraceLogDTO> pageWrap, HttpServletResponse response) { + ExcelExporter.build(SystemTraceLog.class).export(systemTraceLogService.findPage(pageWrap).getRecords(), "鎿嶄綔鏃ュ織", response); + } +} diff --git a/server/system_service/src/main/java/com/doumee/api/cloud/SystemUserController.java b/server/system_service/src/main/java/com/doumee/api/cloud/SystemUserController.java new file mode 100644 index 0000000..55d2c71 --- /dev/null +++ b/server/system_service/src/main/java/com/doumee/api/cloud/SystemUserController.java @@ -0,0 +1,140 @@ +package com.doumee.api.cloud; + +import com.doumee.api.BaseController; +import com.doumee.biz.system.SystemUserBiz; +import com.doumee.core.annotation.pr.PreventRepeat; +import com.doumee.core.annotation.trace.Trace; +import com.doumee.core.constants.OperaType; +import com.doumee.core.model.ApiResponse; +import com.doumee.core.model.PageData; +import com.doumee.core.model.PageWrap; +import com.doumee.dao.system.dto.CreateSystemUserDTO; +import com.doumee.dao.system.dto.CreateUserRoleDTO; +import com.doumee.dao.system.dto.QuerySystemUserDTO; +import com.doumee.dao.system.dto.ResetSystemUserPwdDTO; +import com.doumee.dao.system.model.SystemUser; +import com.doumee.dao.system.vo.SystemUserListVO; +import com.doumee.service.system.SystemUserService; +import io.swagger.annotations.*; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +/** + * @author Eva.Caesar Liu + * @date 2023/03/21 14:49 + */ +@Api(tags = "鐢ㄦ埛") +@RestController +@RequestMapping("/cloudService/system/user") +public class SystemUserController extends BaseController { + + @Autowired + private SystemUserService systemUserService; + + @Autowired + private SystemUserBiz systemUserBiz; + + @PreventRepeat + @ApiOperation("閰嶇疆鐢ㄦ埛瑙掕壊") + @PostMapping("/createUserRole") + @RequiresPermissions("system:user:createUserRole") + public ApiResponse createUserRole (@Validated @RequestBody CreateUserRoleDTO dto) { + systemUserBiz.createUserRole(dto); + return ApiResponse.success(null); + } + + @Trace(withRequestParameters = false) + @PreventRepeat + @ApiOperation("閲嶇疆鐢ㄦ埛瀵嗙爜") + @PostMapping("/resetPwd") + @RequiresPermissions("system:user:resetPwd") + public ApiResponse resetPwd (@Validated @RequestBody ResetSystemUserPwdDTO dto) { + dto.setOperaUserId(this.getLoginUser().getId()); + systemUserBiz.resetPwd(dto); + return ApiResponse.success(null); + } + + @Trace(withRequestParameters = false) + @PreventRepeat + @ApiOperation("鏂板缓") + @PostMapping("/create") + @RequiresPermissions("system:user:create") + public ApiResponse create(@Validated(OperaType.Create.class) @RequestBody CreateSystemUserDTO systemUser) { + systemUser.setCreateUser(this.getLoginUser().getId()); + systemUserBiz.create(systemUser); + return ApiResponse.success(null); + } + + @ApiOperation("鍒犻櫎") + @GetMapping("/delete/{id}") + @RequiresPermissions("system:user:delete") + public ApiResponse deleteById(@PathVariable Integer id) { + systemUserBiz.deleteById(id); + return ApiResponse.success(null); + } + + @ApiOperation("鎵归噺鍒犻櫎") + @GetMapping("/delete/batch") + @RequiresPermissions("system:user:delete") + public ApiResponse deleteByIdInBatch(@RequestParam String ids) { + String [] idArray = ids.split(","); + List<Integer> idList = new ArrayList<>(); + for (String id : idArray) { + idList.add(Integer.valueOf(id)); + } + systemUserBiz.deleteByIdInBatch(idList); + return ApiResponse.success(null); + } + + @Trace(withRequestParameters = false) + @ApiOperation("淇敼") + @PostMapping("/updateById") + @RequiresPermissions("system:user:update") + public ApiResponse updateById( @RequestBody CreateSystemUserDTO systemUser) { + systemUser.setUpdateUser(this.getLoginUser().getId()); + systemUserBiz.updateById(systemUser); + return ApiResponse.success(null); + } + + @ApiOperation("鍒嗛〉鏌ヨ") + @PostMapping("/page") + @RequiresPermissions("system:user:query") + public ApiResponse<PageData<SystemUserListVO>> findPage (@RequestBody PageWrap<QuerySystemUserDTO> pageWrap) { + return ApiResponse.success(systemUserService.findPage(pageWrap)); + } + + + + + + @ApiOperation("鏌ヨ鎵�鏈夌郴缁熺敤鎴�") + @PostMapping("/findAllList") + @RequiresPermissions("system:user:query") + public ApiResponse<List<SystemUser>> findAllList (@RequestBody SystemUser pageWrap) { + return ApiResponse.success(systemUserService.findAllList(pageWrap)); + } + + + @ApiOperation("鏍规嵁ID鏌ヨ") + @GetMapping("/{id}") + @RequiresPermissions("system:user:query") + public ApiResponse findById(@PathVariable Integer id) { + return ApiResponse.success(systemUserService.findById(id)); + } + + @ApiOperation("鐢ㄦ埛瀵煎叆") + @PostMapping("/importSystemUserBatch") + @RequiresPermissions("system:user:query") + @ApiImplicitParams({ + @ApiImplicitParam(name = "file", value = "file", required = true, paramType = "query", dataType = "file", dataTypeClass = File.class), + }) + public ApiResponse importSystemUserBatch(@ApiParam(value = "file") MultipartFile file){ + return ApiResponse.success(systemUserBiz.importSystemUserBatch(file)); + } +} diff --git a/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java b/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java index 6b87b55..eeeea19 100644 --- a/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java +++ b/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java @@ -132,7 +132,7 @@ } String pwd = Utils.Secure.encryptPassword(new String(dto.getPassword()), user.getSalt()); // 姣旇緝瀵嗙爜 - if( StringUtils.equals(pwd, user.getPassword())){ + if( !StringUtils.equals(pwd, user.getPassword())){ throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); } // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅 -- Gitblit v1.9.3