server/meeting/meeting_admin/src/main/java/com/doumee/api/BaseController.java
@@ -1,6 +1,5 @@ package com.doumee.api; import com.doumee.config.Jwt.JwtTokenUtil; import com.doumee.core.model.LoginUserInfo; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.SecurityUtils; @@ -35,16 +34,6 @@ public HttpServletRequest getRequest() { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); return request; } /** * è·åç¨æ·ID * * @return */ protected Integer getMemberId() { Object obj = this.getRequest().getAttribute(JwtTokenUtil.UserId_Name); return obj != null ? (Integer) obj : null; } server/meeting/meeting_admin/src/main/java/com/doumee/api/common/PublicController.java
@@ -6,28 +6,31 @@ import com.doumee.core.annotation.trace.Trace; import com.doumee.core.utils.Constants; import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.FtpUtil; import com.doumee.core.utils.aliyun.ALiYunUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.commons.CommonsMultipartFile; import org.springframework.web.multipart.commons.CommonsMultipartResolver; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.util.*; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.UUID; /** * @author Eva.Caesar Liu @@ -45,48 +48,109 @@ private SystemDictDataBiz systemDictDataBiz; @ApiOperation(value = "ä¸ä¼ ", notes = "ä¸ä¼ ", httpMethod = "POST", position = 6) @ApiImplicitParams({ @ApiImplicitParam(name = "folder", value = "æä»¶å¤¹", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class), }) @PostMapping(value = "/upload", headers = "content-type=multipart/form-data") public void uploadMobile(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; upload(multipartRequest, response, folder + "/", systemDictDataBiz.queryByCode(Constants.OSS,Constants.BUCKETNAME).getCode(), systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_ID).getCode(), systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_KEY).getCode(), systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode(), systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode()); } // @ApiOperation(value = "ä¸ä¼ ", notes = "ä¸ä¼ ", httpMethod = "POST", position = 6) // @ApiImplicitParams({ // @ApiImplicitParam(name = "folder", value = "æä»¶å¤¹", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class), // }) // @PostMapping(value = "/upload", headers = "content-type=multipart/form-data") // public void uploadMobile(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception { // MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; // upload(multipartRequest, response, folder + "/", // systemDictDataBiz.queryByCode(Constants.OSS,Constants.BUCKETNAME).getCode(), // systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_ID).getCode(), // systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_KEY).getCode(), // systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode(), // systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode()); // } // // // @ApiOperation(value = "ä¸ä¼ å¾ç", notes = "ä¸ä¼ å¾ç", httpMethod = "POST", position = 6) // @ApiImplicitParams({ // @ApiImplicitParam(name = "folder", value = "æä»¶å¤¹", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class), // }) // @PostMapping(value = "/uploadPicture", headers = "content-type=multipart/form-data") // public void uploadPicture(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception { // MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; // Iterator<String> fileNames = multipartRequest.getFileNames(); // Map<String, Object> context = new HashMap<>(); // while (fileNames.hasNext()){ // MultipartFile file = multipartRequest.getFile(fileNames.next()); // String fileName = file.getOriginalFilename(); // String suffix = fileName.substring(fileName.lastIndexOf(".")); // if ( !StringUtils.equalsIgnoreCase(suffix, ".jpg") || !StringUtils.equalsIgnoreCase(suffix, ".png")) { // context.put("code", 0); // context.put("message", "对ä¸èµ·ï¼æä»¶æ ¼å¼ä¸ä¼ æè¯¯ï¼"); // } // } // upload(multipartRequest, response, folder + "/", // systemDictDataBiz.queryByCode(Constants.OSS,Constants.BUCKETNAME).getCode(), // systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_ID).getCode(), // systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_KEY).getCode(), // systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode(), // systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode()); // } @ApiOperation(value = "ä¸ä¼ å¾ç", notes = "ä¸ä¼ å¾ç", httpMethod = "POST", position = 6) @ApiImplicitParams({ @ApiImplicitParam(name = "folder", value = "banner/ ï¼è½®æï¼goods/ (åå)member/ (ç¨æ·ï¼shop/ ï¼åºéºï¼system/ (ç³»ç»é ç½®çï¼activity/ ï¼åç°ï¼commet/ (è¯è®ºï¼other/ ï¼å ¶ä»ï¼aftersale/ï¼å®åï¼", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class), }) @PostMapping(value = "/uploadPicture", headers = "content-type=multipart/form-data") public void uploadPicture(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Iterator<String> fileNames = multipartRequest.getFileNames(); public static FtpUtil ftp = null; @ApiOperation(value = "ä¸ä¼ æä»¶å°FTP") @RequestMapping(method= RequestMethod.POST,value="upload") @ResponseBody public void upload(HttpServletRequest request, HttpServletResponse response, String folder) throws Exception { // folder = systemDictDataBiz.queryByCode(Constants.FTP,folder).getCode(); String prefixPath = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode(); InputStream is = null; response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); Map<String, Object> context = new HashMap<>(); while (fileNames.hasNext()){ MultipartFile file = multipartRequest.getFile(fileNames.next()); String fileName = file.getOriginalFilename(); String suffix = fileName.substring(fileName.lastIndexOf(".")); if ( !StringUtils.equalsIgnoreCase(suffix, ".jpg") || !StringUtils.equalsIgnoreCase(suffix, ".png")) { try { if(ftp == null){ ftp = new FtpUtil(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_HOST).getCode(), Integer.parseInt(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_PORT).getCode()), systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_USERNAME).getCode(), systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_PWD).getCode()); }else{ ftp.connect(); } CommonsMultipartResolver multipartResovler = new CommonsMultipartResolver(); if (multipartResovler.isMultipart(request)) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Iterator<String> it = multipartRequest.getFileNames(); while (it.hasNext()) { MultipartFile file = multipartRequest.getFile(it.next()); is = file.getInputStream(); String date = DateUtil.getNowShortDate(); String fName = date+"/"+ UUID.randomUUID()+".jpg"; String fileName = folder+fName; boolean r = ftp.uploadInputstream(is,fileName); if(r){ context.put("success", true); context.put("code", 200); context.put("errno",0); JSONObject fileJSON = new JSONObject(); fileJSON.put("halfPath", fName); fileJSON.put("prefixPath", prefixPath); fileJSON.put("folder", folder); context.put("data",fileJSON); context.put("message","è¯·æ±æå"); writerJson(response, context); return; } } } } catch (Exception e) { log.error("ãä¸ä¼ FTP失败ã======================"+e.getMessage()); } context.put("code", 0); context.put("message", "对ä¸èµ·ï¼æä»¶æ ¼å¼ä¸ä¼ æè¯¯ï¼"); context.put("message", "ä¸ä¼ 失败"); context.put("errno",0); writerJson(response, context); return; } } upload(multipartRequest, response, folder + "/", systemDictDataBiz.queryByCode(Constants.OSS,Constants.BUCKETNAME).getCode(), systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_ID).getCode(), systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_KEY).getCode(), systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode(), systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode()); } public void upload(HttpServletRequest request, HttpServletResponse response, String folder, String bucketName, @@ -184,20 +248,7 @@ } @ApiOperation(value = "ä¸ä¼ ", notes = "ä¸ä¼ ", httpMethod = "POST", position = 6) @ApiImplicitParams({ @ApiImplicitParam(name = "folder", value = "æä»¶å¤¹", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class), }) @PostMapping(value = "/uploadLocal", headers = "content-type=multipart/form-data") public void uploadLocal(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; // CommonsMultipartFile files = (CommonsMultipartFile) multipartRequest.getFile("filedata"); uploadFileLocal(multipartRequest, folder+ "/", response, systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ROOT_PATH).getCode() , systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.FILE_DIR).getCode()); } public void uploadFileLocal(HttpServletRequest request, String folder, HttpServletResponse response, String rootPath,String dir) throws Exception { response.setCharacterEncoding("UTF-8"); @@ -323,6 +374,4 @@ writerJson(response, context); return; } } server/meeting/meeting_admin/src/main/java/com/doumee/api/system/NoticesController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,92 @@ package com.doumee.api.system; 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("/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)); } } server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,69 @@ package com.doumee.api.system; 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.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("/system") public class SystemController extends BaseController { @Autowired private SystemUserBiz systemUserBiz; @Autowired private SystemLoginService systemLoginService; @PreventRepeat(limit = 10, lockTime = 10000) @ApiOperation("ç»å½") @PostMapping("/login") public ApiResponse<String> login (@Validated @RequestBody LoginDTO dto, HttpServletRequest request) { return ApiResponse.success(systemLoginService.loginByPassword(dto, request)); } @ApiOperation("éåºç»å½") @PostMapping("/logout") public ApiResponse logout () { Subject subject = SecurityUtils.getSubject(); subject.logout(); return ApiResponse.success(null); } @Trace(withRequestParameters = false) @ApiOperation("ä¿®æ¹å½åç¨æ·å¯ç ") @PostMapping("/updatePwd") public ApiResponse updatePwd (@Validated @RequestBody UpdatePwdDto dto) { dto.setUserId(this.getLoginUser().getId()); systemUserBiz.updatePwd(dto); return ApiResponse.success(null); } @ApiOperation("è·åå½åç»å½çç¨æ·ä¿¡æ¯") @GetMapping("/getUserInfo") public ApiResponse<LoginUserInfo> getUserInfo () { return ApiResponse.success(this.getLoginUser()); } } server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemDataPermissionController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,106 @@ package com.doumee.api.system; 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.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("/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(@Validated(OperaType.Create.class) @RequestBody SystemDataPermission systemDataPermission) { 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(@Validated(OperaType.Update.class) @RequestBody SystemDataPermission systemDataPermission) { systemDataPermissionBiz.update(systemDataPermission); return ApiResponse.success(null); } @ApiOperation("ä¿®æ¹ç¶æ") @PostMapping("/updateStatus") @RequiresPermissions("system:datapermission:update") public ApiResponse updateStatus(@Validated(OperaType.UpdateStatus.class) @RequestBody SystemDataPermission systemDataPermission) { systemDataPermissionBiz.updateStatus(systemDataPermission); return ApiResponse.success(null); } @ApiOperation("å页æ¥è¯¢") @PostMapping("/page") @RequiresPermissions("system:datapermission:query") public ApiResponse<PageData<SystemDataPermissionListVO>> findPage (@RequestBody PageWrap<SystemDataPermission> pageWrap) { return ApiResponse.success(systemDataPermissionService.findPage(pageWrap)); } @Trace(exclude = true) @ApiOperation("æ¥è¯¢æ°æ®æéç±»å") @GetMapping("/types") public ApiResponse<List<Map<String, Object>>> findTypes () { return ApiResponse.success(DataPermissionConstants.Type.valueList()); } @Trace(exclude = true) @ApiOperation("æ¥è¯¢æ°æ®æé模å") @GetMapping("/modules") public ApiResponse<List<Map<String, Object>>> findModules () { return ApiResponse.success(DataPermissionConstants.Module.valueList()); } } server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemDepartmentController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,109 @@ package com.doumee.api.system; 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.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("/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(@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(@PathVariable Integer id) { systemDepartmentBiz.deleteById(id); return ApiResponse.success(null); } @ApiOperation("æ¹éå é¤") @GetMapping("/delete/batch") @PreventRepeat @RequiresPermissions("system:department: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)); } systemDepartmentBiz.deleteByIdInBatch(idList); return ApiResponse.success(null); } @ApiOperation("ä¿®æ¹") @PostMapping("/updateById") @RequiresPermissions("system:department:update") public ApiResponse updateById(@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 () { 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(Integer parentId) { return ApiResponse.success(systemDepartmentBiz.findTreeUser(parentId)); } @Trace(exclude = true) @ApiOperation("æ¥è¯¢é¨é¨äººå") @PostMapping("/users") @RequiresPermissions("system:department:queryUsers") public ApiResponse<PageData<SystemUserListVO>> findPage (@RequestBody PageWrap<QuerySystemUserDTO> pageWrap) { return ApiResponse.success(systemUserService.findPage(pageWrap)); } } server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemDictController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,82 @@ package com.doumee.api.system; 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.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("/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(@Validated(OperaType.Create.class) @RequestBody SystemDict systemDict) { return ApiResponse.success(systemDictBiz.create(systemDict)); } @ApiOperation("å é¤") @GetMapping("/delete/{id}") @RequiresPermissions("system:dict:delete") public ApiResponse deleteById(@PathVariable Integer id) { systemDictService.deleteById(id); return ApiResponse.success(null); } @ApiOperation("æ¹éå é¤") @GetMapping("/delete/batch") @RequiresPermissions("system:dict: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)); } systemDictService.deleteByIdInBatch(idList); return ApiResponse.success(null); } @ApiOperation("ä¿®æ¹") @PostMapping("/updateById") @RequiresPermissions("system:dict:update") public ApiResponse updateById(@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 (@RequestBody PageWrap<QuerySystemDictDTO> pageWrap) { return ApiResponse.success(systemDictService.findPage(pageWrap)); } } server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemDictDataController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,97 @@ package com.doumee.api.system; 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.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("/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(@Validated(OperaType.Create.class) @RequestBody SystemDictData systemDictData) { return ApiResponse.success(systemDictDataBiz.create(systemDictData)); } @ApiOperation("å é¤") @GetMapping("/delete/{id}") @RequiresPermissions("system:dict:update") public ApiResponse deleteById(@PathVariable Integer id) { systemDictDataService.deleteById(id); return ApiResponse.success(null); } @ApiOperation("æ¹éå é¤") @GetMapping("/delete/batch") @RequiresPermissions("system:dict: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)); } systemDictDataService.deleteByIdInBatch(idList); return ApiResponse.success(null); } @ApiOperation("ä¿®æ¹") @PostMapping("/updateById") @RequiresPermissions("system:dict:update") public ApiResponse updateById(@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 (@RequestBody PageWrap<QuerySystemDictDataDTO> pageWrap) { return ApiResponse.success(systemDictDataService.findPage(pageWrap)); } @ApiOperation(value = "æ¥è¯¢åå ¸å¼æ°æ®" ) @GetMapping("/getSystemDictData") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", dataType = "String", name = "label", value = "æ°æ®åå ¸å¼H5_LINK_ADDR", required = true), @ApiImplicitParam(paramType = "query", dataType = "String", name = "dictCode", value = "ç³»ç»åå ¸å¼SYSTEM", required = true) }) public ApiResponse<SystemDictData> getSystemDictData(@RequestParam String dictCode, @RequestParam String label) { return ApiResponse.success(systemDictDataBiz.queryByCode(dictCode,label)); } } server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemLoginLogController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,47 @@ package com.doumee.api.system; 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("/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); } } server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemMenuController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,100 @@ package com.doumee.api.system; 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.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("/system/menu") public class SystemMenuController extends BaseController { @Autowired private SystemMenuBiz systemMenuBiz; @ApiOperation("èåæåº") @PostMapping("/updateSort") @RequiresPermissions("system:menu:sort") public ApiResponse updateSort (@Validated @RequestBody UpdateSystemMenuSortDTO dto) { systemMenuBiz.updateSort(dto); return ApiResponse.success(null); } @ApiOperation("æ¥è¯¢èåæ ") @GetMapping("/treeNodes") public ApiResponse<List<SystemMenuNodeVO>> getTreeMenu () { return ApiResponse.success(systemMenuBiz.findTree(this.getLoginUser().getId())); } @ApiOperation("æ¥è¯¢å表æ ") @PostMapping("/treeList") @RequiresPermissions("system:menu:query") public ApiResponse<List<SystemMenuListVO>> findTree () { return ApiResponse.success(systemMenuBiz.findTree()); } @PreventRepeat @ApiOperation("æ°å»º") @PostMapping("/create") @RequiresPermissions("system:menu:create") public ApiResponse create(@Validated(OperaType.Create.class) @RequestBody SystemMenu systemMenu) { return ApiResponse.success(systemMenuBiz.create(systemMenu)); } @ApiOperation("å é¤") @GetMapping("/delete/{id}") @RequiresPermissions("system:menu:delete") public ApiResponse deleteById(@PathVariable Integer id) { systemMenuBiz.deleteById(id); return ApiResponse.success(null); } @ApiOperation("æ¹éå é¤") @GetMapping("/delete/batch") @RequiresPermissions("system:menu: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)); } systemMenuBiz.deleteByIdInBatch(idList); return ApiResponse.success(null); } @ApiOperation("ä¿®æ¹") @PostMapping("/updateById") @RequiresPermissions("system:menu:update") public ApiResponse updateById(@Validated(OperaType.Update.class) @RequestBody SystemMenu systemMenu) { systemMenuBiz.updateById(systemMenu); return ApiResponse.success(null); } @ApiOperation("ä¿®æ¹èåç¶æ") @PostMapping("/updateStatus") @RequiresPermissions("system:menu:update") public ApiResponse updateStatus(@Validated(OperaType.UpdateStatus.class) @RequestBody SystemMenu systemMenu) { systemMenuBiz.updateById(systemMenu); return ApiResponse.success(null); } } server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemMonitorController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,31 @@ package com.doumee.api.system; import com.doumee.api.BaseController; import com.doumee.core.annotation.trace.Trace; import com.doumee.core.model.ApiResponse; 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.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("/system/monitor") public class SystemMonitorController extends BaseController { @ApiOperation("è·åç³»ç»ä¿¡æ¯") @GetMapping("/getSystemInfo") @RequiresPermissions("system:monitor:query") public ApiResponse<Monitor> getSystemInfo () { return ApiResponse.success(Utils.Monitor.current()); } } server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemPermissionController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,91 @@ package com.doumee.api.system; 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.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("/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(@Validated(OperaType.Create.class) @RequestBody SystemPermission systemPermission) { return ApiResponse.success(systemPermissionBiz.create(systemPermission)); } @ApiOperation("å é¤") @GetMapping("/delete/{id}") @RequiresPermissions("system:permission:delete") public ApiResponse deleteById(@PathVariable Integer id) { systemPermissionBiz.deleteById(id); return ApiResponse.success(null); } @ApiOperation("æ¹éå é¤") @GetMapping("/delete/batch") @RequiresPermissions("system:permission: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)); } systemPermissionBiz.deleteByIdInBatch(idList); return ApiResponse.success(null); } @ApiOperation("ä¿®æ¹") @PostMapping("/updateById") @RequiresPermissions("system:permission:update") public ApiResponse updateById(@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 (@RequestBody PageWrap<QuerySystemPermissionDTO> pageWrap) { return ApiResponse.success(systemPermissionService.findPage(pageWrap)); } @ApiOperation("æ¥è¯¢ææ") @GetMapping("/all") @RequiresPermissions("system:permission:query") public ApiResponse<List<SystemPermission>> findAll () { SystemPermission systemPermission = new SystemPermission(); systemPermission.setDeleted(Boolean.FALSE); return ApiResponse.success(systemPermissionService.findList(systemPermission)); } } server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemPositionController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,106 @@ package com.doumee.api.system; 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.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("/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(@Validated(OperaType.Create.class) @RequestBody SystemPosition systemPosition) { return ApiResponse.success(systemPositionBiz.create(systemPosition)); } @ApiOperation("å é¤") @GetMapping("/delete/{id}") @RequiresPermissions("system:position:delete") public ApiResponse deleteById(@PathVariable Integer id) { systemPositionBiz.deleteById(id); return ApiResponse.success(null); } @ApiOperation("æ¹éå é¤") @GetMapping("/delete/batch") @RequiresPermissions("system:position: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)); } systemPositionBiz.deleteByIdInBatch(idList); return ApiResponse.success(null); } @ApiOperation("ä¿®æ¹") @PostMapping("/updateById") @RequiresPermissions("system:position:update") public ApiResponse updateById(@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 () { return ApiResponse.success(systemPositionBiz.findTree()); } @ApiOperation("æ¥è¯¢å²ä½å表") @PostMapping("/all") @RequiresPermissions("system:position:query") public ApiResponse<List<SystemPosition>> findList () { 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 (@RequestBody PageWrap<QuerySystemUserDTO> pageWrap) { return ApiResponse.success(systemUserService.findPage(pageWrap)); } } server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemRoleController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,111 @@ package com.doumee.api.system; 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.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("/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 (@Validated @RequestBody CreateRoleMenuDTO dto) { systemRoleBiz.createRoleMenu(dto); return ApiResponse.success(null); } @PreventRepeat @ApiOperation("é ç½®è§è²æé") @PostMapping("/createRolePermission") @RequiresPermissions("system:role:createRolePermission") public ApiResponse createRolePermission (@Validated @RequestBody CreateRolePermissionDTO dto) { systemRoleBiz.createRolePermission(dto); return ApiResponse.success(null); } @PreventRepeat @ApiOperation("æ°å»º") @PostMapping("/create") @RequiresPermissions("system:role:create") public ApiResponse create(@Validated(OperaType.Create.class) @RequestBody SystemRole systemRole) { return ApiResponse.success(systemRoleBiz.create(systemRole)); } @ApiOperation("å é¤") @GetMapping("/delete/{id}") @RequiresPermissions("system:role:delete") public ApiResponse deleteById(@PathVariable Integer id) { systemRoleBiz.deleteById(id); return ApiResponse.success(null); } @ApiOperation("æ¹éå é¤") @GetMapping("/delete/batch") @RequiresPermissions("system:role: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)); } systemRoleBiz.deleteByIdInBatch(idList); return ApiResponse.success(null); } @ApiOperation("ä¿®æ¹") @PostMapping("/updateById") @RequiresPermissions("system:role:update") public ApiResponse updateById(@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 (@RequestBody PageWrap<QuerySystemRoleDTO> pageWrap) { return ApiResponse.success(systemRoleService.findPage(pageWrap)); } @ApiOperation("æ¥è¯¢ææ") @GetMapping("/all") @RequiresPermissions("system:role:query") public ApiResponse<List<SystemRole>> findAll () { SystemRole systemRole = new SystemRole(); systemRole.setDeleted(Boolean.FALSE); return ApiResponse.success(systemRoleService.findList(systemRole)); } } server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemTraceLogController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,46 @@ package com.doumee.api.system; 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("/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); } } server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemUserController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,141 @@ package com.doumee.api.system; 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("/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)); } } server/meeting/meeting_admin/src/main/java/com/doumee/api/timer/QuartzController.javacopy from server/system_service/src/main/java/com/doumee/api/timer/QuartzController.java copy to server/meeting/meeting_admin/src/main/java/com/doumee/api/timer/QuartzController.java
server/meeting/meeting_admin/src/main/java/com/doumee/config/shiro/ShiroConfig.java
@@ -80,6 +80,7 @@ map.put("/webjars/**", "anon"); map.put("/swagger-resources/**", "anon"); map.put("/v2/api-docs/**", "anon"); map.put("/swagger-ui/**", "anon"); map.put("/wgListener/**", "anon"); // - å ¶ä»æ¥å£ç»ä¸æ¦æª map.put("/**", "authc"); server/meeting/meeting_admin/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
@@ -3,6 +3,7 @@ import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; import com.google.common.base.Function; import com.google.common.base.Optional; import lombok.AllArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -46,7 +47,7 @@ .version(version) .build(); } @Bean /* @Bean public Docket getDocket() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(this.getApiInfo()).groupName("ãç³»ç»ç®¡çæ¥å£APIã") @@ -57,20 +58,20 @@ // .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) .paths(PathSelectors.any()) .build(); } }*/ @Bean public Docket getDocket2() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(this.getApiInfo()).groupName("ãä¸å¡ç®¡çæ¥å£APIã") .apiInfo(this.getApiInfo()).groupName("default") .host(host) .select() .apis( basePackage("com.doumee.api.system;com.doumee.api.business;")) .apis( basePackage("com.doumee.api.system;com.doumee.api.business;com.doumee.api.common")) // 设置éè¦è¢«æ«æçç±»ï¼è¿é设置为添å äº@Api注解çç±» // .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) .paths(PathSelectors.any()) .build(); } @Bean /* @Bean public Docket getDocket1() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(this.getApiInfo()).groupName("ãå ¬å ±æ¥å£APIã") @@ -81,7 +82,7 @@ // .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) .paths(PathSelectors.any()) .build(); } }*/ /** * éåbasePackageæ¹æ³ï¼ä½¿è½å¤å®ç°å¤å 访é®ï¼å¤å¶è´´ä¸å» * @author teavamc server/meeting/meeting_admin/src/main/resources/application.yml
@@ -66,6 +66,15 @@ password: 111111 main: allow-circular-references: true # Swaggeré ç½® swagger: host: title: ${project.name}æ¥å£ææ¡£ description: ${project.name}æ¥å£ææ¡£ enabled: true # ç¦ç¨swaggeræ¶çéå®åå°å redirect-uri: / # WEBæå¡å¨é ç½® server: server/meeting/meeting_admin/src/main/resources/bootstrap.yml
@@ -28,3 +28,9 @@ namespace: dmvisit username: nacos password: nacos # å®å ¨é ç½® security: # éªç¾å ¬é¥å°å oauth2: authorizationserver: token-uri: http:// server/meeting/meeting_service/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.java
ÎļþÃû´Ó server/system_service/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.java ÐÞ¸Ä @@ -1,8 +1,8 @@ package com.doumee.config.handler; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.ApiResponse; import com.doumee.core.constants.ResponseStatus; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.UnauthorizedException; server/meeting/meeting_service/src/main/resources/application-dev.yml
@@ -17,13 +17,13 @@ # topic: waka-test # username: 4derRb4Sw5EkqUMI # password: v50N97wf4av8Q8I4 knife4j: enable: true basic: enable: true username: admin password: 111111 # #knife4j: # enable: true # basic: # enable: true # username: admin # password: 111111 debug_model: true server/meeting/meeting_service/src/main/resources/application-pro.yml
@@ -7,13 +7,13 @@ driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource knife4j: enable: true basic: enable: true username: admin password: doumee@168.com # #knife4j: # enable: true # basic: # enable: true # username: admin # password: doumee@168.com debug_model: true server/meeting/meeting_service/src/main/resources/application-test.yml
@@ -8,12 +8,12 @@ type: com.alibaba.druid.pool.DruidDataSource knife4j: enable: true basic: enable: true username: admin password: test@168.com #knife4j: # enable: true # basic: # enable: true # username: admin # password: test@168.com debug_model: true server/meeting/meeting_web/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
@@ -1,3 +1,4 @@ /* package com.doumee.config.swagger; import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; @@ -11,7 +12,7 @@ import springfox.documentation.builders.ParameterBuilder; import springfox.documentation.service.Parameter; import springfox.documentation.builders.PathSelectors; import springfox.documentation.oas.annotations.EnableOpenApi; //import springfox.documentation.oas.annotations.EnableOpenApi; import springfox.documentation.schema.ModelRef; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; @@ -21,11 +22,13 @@ import java.util.List; import java.util.function.Predicate; */ /** * Swaggeré ç½® * @author Eva.Caesar Liu * @date 2022/03/11 10:24 */ *//* @Configuration @EnableOpenApi @EnableKnife4j @@ -85,12 +88,14 @@ .paths(PathSelectors.any()) .build(); } */ /** * éåbasePackageæ¹æ³ï¼ä½¿è½å¤å®ç°å¤å 访é®ï¼å¤å¶è´´ä¸å» * @author teavamc * @date 2019/1/26 * @return com.google.common.base.Predicate<springfox.documentation.RequestHandler> */ *//* public static Predicate<RequestHandler> basePackage(String basePackage) { return input -> declaringClass(input).transform(handlerPackage(basePackage)).or(true); } @@ -112,3 +117,4 @@ return Optional.fromNullable(input.declaringClass()); } } */ server/meeting/pom.xml
@@ -23,10 +23,6 @@ <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.3.12.RELEASE</version> <type>pom</type> @@ -46,6 +42,12 @@ <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <!-- <version>2.2.7.RELEASE</version>--> </dependency> <!-- Swagger å¢å¼ºknife4j å¾®æå¡starter --> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-micro-spring-boot-starter</artifactId> <version>3.0.3</version> <scope>compile</scope> </dependency> </dependencies> </project> server/system_gateway/pom.xml
@@ -30,7 +30,6 @@ <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency>--> <!-- Nacos Discovery --> <dependency> <groupId>com.alibaba.cloud</groupId> @@ -46,8 +45,6 @@ <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <!-- å ¶ä»ä¾èµ... --> </dependencies> <dependencyManagement> server/system_gateway/src/main/java/com/doumee/SystemGatewayApplication.java
@@ -1,6 +1,5 @@ package com.doumee; import lombok.extern.slf4j.Slf4j; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -13,11 +12,10 @@ * @author Eva.Caesar Liu * @date 2023/03/21 14:49 */ @Slf4j @EnableAsync @SpringBootApplication @EnableDiscoveryClient @MapperScan("com.doumee.dao") @MapperScan("com.doumee.dao.*") public class SystemGatewayApplication { public static void main(String[] args) { ApplicationContext context = SpringApplication.run(SystemGatewayApplication.class); server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java
ÎļþÒÑɾ³ý server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroCache.java
ÎļþÒÑɾ³ý server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java
ÎļþÒÑɾ³ý server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroConfig.java
ÎļþÒÑɾ³ý server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java
ÎļþÒÑɾ³ý server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroRealm.java
ÎļþÒÑɾ³ý server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java
ÎļþÒÑɾ³ý server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java
ÎļþÒÑɾ³ý server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroSessionSerializer.java
ÎļþÒÑɾ³ý server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroToken.java
ÎļþÒÑɾ³ý server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java
ÎļþÒÑɾ³ý server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
ÎļþÒÑɾ³ý server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerHandler.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,46 @@ package com.doumee.config.swagger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import reactor.core.publisher.Mono; import springfox.documentation.swagger.web.*; import java.util.Optional; @RestController public class SwaggerHandler { @Autowired(required = false) private SecurityConfiguration securityConfiguration; @Autowired(required = false) private UiConfiguration uiConfiguration; private final SwaggerResourcesProvider swaggerResources; @Autowired public SwaggerHandler(SwaggerResourcesProvider swaggerResources) { this.swaggerResources = swaggerResources; } @GetMapping("/swagger-resources/configuration/security") public Mono<ResponseEntity<SecurityConfiguration>> securityConfiguration() { return Mono.just(new ResponseEntity<>( Optional.ofNullable(securityConfiguration).orElse(SecurityConfigurationBuilder.builder().build()), HttpStatus.OK)); } @GetMapping("/swagger-resources/configuration/ui") public Mono<ResponseEntity<UiConfiguration>> uiConfiguration() { return Mono.just(new ResponseEntity<>( Optional.ofNullable(uiConfiguration).orElse(UiConfigurationBuilder.builder().build()), HttpStatus.OK)); } @GetMapping("/swagger-resources") public Mono<ResponseEntity> swaggerResources() { return Mono.just((new ResponseEntity<>(swaggerResources.get(), HttpStatus.OK))); } } server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerHeaderFilter.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,41 @@ package com.doumee.config.swagger; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.gateway.filter.GatewayFilter; import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; import springfox.documentation.swagger.web.*; import java.util.Optional; @Component public class SwaggerHeaderFilter extends AbstractGatewayFilterFactory { private static final String HEADER_NAME = "X-Forwarded-Prefix"; private static final String URI = "/v2/api-docs"; @Override public GatewayFilter apply(Object config) { return (exchange, chain) -> { ServerHttpRequest request = exchange.getRequest(); String path = request.getURI().getPath(); if (!StringUtils.endsWithIgnoreCase(path, URI)) { return chain.filter(exchange); } String basePath = path.substring(0, path.lastIndexOf(URI)); ServerHttpRequest newRequest = request.mutate().header(HEADER_NAME, basePath).build(); ServerWebExchange newExchange = exchange.mutate().request(newRequest).build(); return chain.filter(newExchange); }; } } server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java
ÎļþÒÑɾ³ý server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java
ÎļþÒÑɾ³ý server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerResourceConfig.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,49 @@ package com.doumee.config.swagger; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.gateway.config.GatewayProperties; import org.springframework.cloud.gateway.route.RouteLocator; import org.springframework.cloud.gateway.support.NameUtils; import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Component; import springfox.documentation.swagger.web.SwaggerResource; import springfox.documentation.swagger.web.SwaggerResourcesProvider; import java.util.ArrayList; import java.util.List; @Slf4j @Component @Primary @AllArgsConstructor public class SwaggerResourceConfig implements SwaggerResourcesProvider { private final RouteLocator routeLocator; private final GatewayProperties gatewayProperties; @Override public List<SwaggerResource> get() { List<SwaggerResource> resources = new ArrayList<>(); List<String> routes = new ArrayList<>(); routeLocator.getRoutes().subscribe(route -> routes.add(route.getId())); gatewayProperties.getRoutes().stream().filter(routeDefinition -> routes.contains(routeDefinition.getId())).forEach(route -> { route.getPredicates().stream() .filter(predicateDefinition -> ("Path").equalsIgnoreCase(predicateDefinition.getName())) .forEach(predicateDefinition -> resources.add(swaggerResource(route.getId(), predicateDefinition.getArgs().get(NameUtils.GENERATED_NAME_PREFIX + "0") .replace("**", "v2/api-docs?group=default")))); }); return resources; } private SwaggerResource swaggerResource(String name, String location) { log.info("name:{},location:{}",name,location); SwaggerResource swaggerResource = new SwaggerResource(); swaggerResource.setName(name); swaggerResource.setLocation(location); swaggerResource.setSwaggerVersion("1.0.0"); return swaggerResource; } } server/system_gateway/src/main/resources/application-dev.yml
@@ -18,12 +18,12 @@ # username: 4derRb4Sw5EkqUMI # password: v50N97wf4av8Q8I4 knife4j: enable: true basic: enable: true username: admin password: 111111 #knife4j: # enable: true # basic: # enable: true # username: admin # password: 111111 debug_model: true server/system_gateway/src/main/resources/application-pro.yml
@@ -8,12 +8,12 @@ type: com.alibaba.druid.pool.DruidDataSource knife4j: enable: true basic: enable: true username: admin password: doumee@168.com #knife4j: # enable: true # basic: # enable: true # username: admin # password: doumee@168.com debug_model: true server/system_gateway/src/main/resources/application-test.yml
@@ -8,12 +8,12 @@ type: com.alibaba.druid.pool.DruidDataSource knife4j: enable: true basic: enable: true username: admin password: test@168.com #knife4j: # enable: true # basic: # enable: true # username: admin # password: test@168.com debug_model: true server/system_gateway/src/main/resources/application.yml
@@ -25,7 +25,7 @@ enabled: true main: allow-circular-references: true # web-application-type: reactive web-application-type: reactive # MyBatisé ç½® mybatis-plus: mapper-locations: classpath*:/mappers/**/*.xml @@ -63,7 +63,9 @@ basic: enable: true username: admin password: 111111 password: 123456 main: allow-circular-references: true # WEBæå¡å¨é ç½® server: server/system_gateway/src/main/resources/bootstrap.yml
@@ -1,6 +1,12 @@ spring: application: name: system_gateway # å®å ¨é ç½® security: # éªç¾å ¬é¥å°å oauth2: authorizationserver: token-uri: https:// cloud: nacos: server-addr: http://175.27.187.84:8848 #é ç½®Nacoså°å @@ -20,24 +26,69 @@ lower-case-service-id: true routes: - id: meetingAdmin name: ä¼è®®å®¤å¾®æå¡ uri: lb://meetingAdmin # uri: http://localhost:10013 # æè¨,è·¯å¾ç¸å¹é çè¿è¡è·¯ç± predicates: - Path=/meetingAdmin/** filters: - SwaggerHeaderFilter - StripPrefix=1 - id: visitsAdmin uri: lb://visitsAdmin name: 访客系ç»å¾®æå¡ # uri: http://localhost:10028 # æè¨,è·¯å¾ç¸å¹é çè¿è¡è·¯ç± predicates: - Path=/visitsAdmin/** filters: - SwaggerHeaderFilter - StripPrefix=1 management: endpoints: web: exposure: include: "*" knife4j: # èåswaggerææ¡£ gateway: # 第ä¸ä¸ªé ç½®ï¼å¼å¯gatewayèåç»ä»¶ enabled: true # 第äºè¡é ç½®ï¼è®¾ç½®è忍¡å¼éç¨discoveræå¡åç°çæ¨¡å¼ strategy: discover # æå¡åç°æ¨¡å¼çé ç½® discover: # 第ä¸è¡é ç½®ï¼å¼å¯discoveræ¨¡å¼ enabled: true # èåææåæå¡(swagger2è§è)ï¼åæå¡æ¯3è§èåæ¿æ¢ä¸ºopenapi3 version: swagger2 # éè¦æé¤çå¾®æå¡(eg:ç½å ³æå¡) excluded-services: - gateway-service # Apiææ¡£ä¿¡æ¯ # springdoc-openapi 项ç®é ç½® springdoc: swagger-ui: path: /doc.html tags-sorter: alpha operations-sorter: alpha api-docs: path: /v2/api-docs group-configs: - group: 'default' paths-to-match: '/**' info: title: ${spring.application.name} - API version: 3.0.0 description: æ¥å£ææ¡£ contact: name: 1 url: 1 email: 1 license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0.html server/system_service/pom.xml
@@ -38,6 +38,10 @@ </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Spring Boot --> <dependency> <groupId>org.springframework.boot</groupId> @@ -103,7 +107,16 @@ <artifactId>knife4j-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>io.swagger.core.v3</groupId> <artifactId>swagger-annotations</artifactId> <version>2.1.5</version> </dependency> <!-- lombok --> <dependency> <groupId>javax.validation</groupId> server/system_service/src/main/java/com/doumee/api/common/CaptchaController.java
ÎļþÒÑɾ³ý server/system_service/src/main/java/com/doumee/api/common/PublicController.java
ÎļþÒÑɾ³ý server/system_service/src/main/java/com/doumee/api/system/NoticesController.java
@@ -13,12 +13,14 @@ 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 org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; import org.springframework.web.bind.annotation.*; /** * @author æ±è¹è¹ * @date 2024/01/16 10:03 server/system_service/src/main/java/com/doumee/api/system/SystemController.java
@@ -16,10 +16,11 @@ 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; import org.springframework.web.bind.annotation.*; /** * @author Eva.Caesar Liu * @date 2023/03/21 14:49 server/system_service/src/main/java/com/doumee/api/system/SystemDataPermissionController.java
@@ -17,12 +17,13 @@ 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; import org.springframework.web.bind.annotation.*; /** * @author Eva.Caesar Liu * @date 2023/03/21 14:49 server/system_service/src/main/java/com/doumee/api/system/SystemDictDataController.java
@@ -19,6 +19,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; server/system_service/src/main/java/com/doumee/api/system/SystemMenuController.java
@@ -14,10 +14,10 @@ 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 org.springframework.web.bind.annotation.*; /** * @author Eva.Caesar Liu server/system_service/src/main/java/com/doumee/api/system/SystemPermissionController.java
@@ -16,10 +16,10 @@ 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 org.springframework.web.bind.annotation.*; /** * @author Eva.Caesar Liu server/system_service/src/main/java/com/doumee/api/system/SystemPositionController.java
@@ -19,11 +19,11 @@ 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 org.springframework.web.bind.annotation.*; /** * å²ä½æ¥å£ * @author Eva.Caesar Liu server/system_service/src/main/java/com/doumee/api/system/SystemRoleController.java
@@ -18,11 +18,11 @@ 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 org.springframework.web.bind.annotation.*; /** * @author Eva.Caesar Liu * @date 2023/03/21 14:49 server/system_service/src/main/java/com/doumee/api/system/SystemUserController.java
@@ -19,13 +19,13 @@ 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; import org.springframework.web.bind.annotation.*; /** * @author Eva.Caesar Liu * @date 2023/03/21 14:49 server/system_service/src/main/java/com/doumee/core/utils/kuaidi100/ExpressUtils.java
@@ -2,12 +2,9 @@ import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import io.swagger.util.Json; import org.apache.commons.codec.digest.DigestUtils; import org.springframework.beans.factory.annotation.Value; import java.util.HashMap; import java.util.Map; server/system_service/src/main/java/com/doumee/dao/system/model/SystemDataPermission.java
@@ -7,7 +7,8 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.io.Serializable; server/visits/dmvisit_admin/src/main/java/com/doumee/api/BaseController.java
@@ -1,6 +1,5 @@ package com.doumee.api; import com.doumee.config.Jwt.JwtTokenUtil; import com.doumee.core.model.LoginUserInfo; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.SecurityUtils; @@ -35,16 +34,6 @@ public HttpServletRequest getRequest() { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); return request; } /** * è·åç¨æ·ID * * @return */ protected Integer getMemberId() { Object obj = this.getRequest().getAttribute(JwtTokenUtil.UserId_Name); return obj != null ? (Integer) obj : null; } server/visits/dmvisit_admin/src/main/java/com/doumee/api/common/PublicController.java
@@ -9,13 +9,14 @@ import com.doumee.core.utils.FtpUtil; import com.doumee.core.utils.aliyun.ALiYunUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.commons.CommonsMultipartResolver; server/visits/dmvisit_admin/src/main/java/com/doumee/api/system/SystemDictDataBizController.java
ÎļþÒÑɾ³ý server/visits/dmvisit_admin/src/main/java/com/doumee/api/timer/QuartzController.java
server/visits/dmvisit_admin/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
@@ -46,7 +46,7 @@ .version(version) .build(); } @Bean /* @Bean public Docket getDocket() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(this.getApiInfo()).groupName("ãç³»ç»ç®¡çæ¥å£APIã") @@ -57,32 +57,20 @@ // .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) .paths(PathSelectors.any()) .build(); } }*/ @Bean public Docket getDocket2() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(this.getApiInfo()).groupName("ãä¸å¡ç®¡çæ¥å£APIã") .apiInfo(this.getApiInfo()).groupName("default") .host(host) .select() .apis( basePackage("com.doumee.api.business;")) .apis( basePackage("com.doumee.api.system;com.doumee.api.business;com.doumee.api.common")) // 设置éè¦è¢«æ«æçç±»ï¼è¿é设置为添å äº@Api注解çç±» // .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) .paths(PathSelectors.any()) .build(); } @Bean public Docket getDocket4() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(this.getApiInfo()).groupName("ã宿¶ä»»å¡æ¥å£APIã") .host(host) .select() .apis( basePackage("com.doumee.api.timer;")) // 设置éè¦è¢«æ«æçç±»ï¼è¿é设置为添å äº@Api注解çç±» // .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) .paths(PathSelectors.any()) .build(); } @Bean /* @Bean public Docket getDocket1() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(this.getApiInfo()).groupName("ãå ¬å ±æ¥å£APIã") @@ -93,7 +81,7 @@ // .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) .paths(PathSelectors.any()) .build(); } }*/ /** * éåbasePackageæ¹æ³ï¼ä½¿è½å¤å®ç°å¤å 访é®ï¼å¤å¶è´´ä¸å» * @author teavamc server/visits/dmvisit_admin/src/main/resources/bootstrap.yml
@@ -1,6 +1,12 @@ spring: application: name: visitsAdmin # å®å ¨é ç½® security: # éªç¾å ¬é¥å°å oauth2: authorizationserver: token-uri: https:// cloud: loadbalancer: enabled: true @@ -28,3 +34,40 @@ namespace: dmvisit username: nacos password: nacos # swaggeré ç½® #knife4j: # # å¼å¯å¢å¼ºé ç½® # enable: true # # å¼å¯ç产ç¯å¢å±è½ # # production: true # setting: # language: zh_cn # # è´¦æ·å¯ç # basic: # enable: true # username: abc # password: abc # ## Apiææ¡£ä¿¡æ¯ ## springdoc-openapi 项ç®é ç½® #springdoc: # swagger-ui: # path: /doc.html # tags-sorter: alpha # operations-sorter: alpha # api-docs: # path: /v3/api-docs # group-configs: # - group: 'default' # paths-to-match: '/**' # info: # title: ${spring.application.name} - API # version: 3.0.0 # description: æ¥å£ææ¡£ # contact: # name: 1 # url: 1 # email: 1 # license: # name: Apache 2.0 # url: https://www.apache.org/licenses/LICENSE-2.0.html server/visits/dmvisit_service/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.javacopy from server/system_service/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.java copy to server/visits/dmvisit_service/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.java
Îļþ´Ó server/system_service/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.java ¸´ÖÆ @@ -1,8 +1,8 @@ package com.doumee.config.handler; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.ApiResponse; import com.doumee.core.constants.ResponseStatus; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.UnauthorizedException; server/visits/dmvisit_service/src/main/resources/application-dev.yml
@@ -23,12 +23,12 @@ # username: 4derRb4Sw5EkqUMI # password: v50N97wf4av8Q8I4 knife4j: enable: true basic: enable: true username: admin password: 111111 #knife4j: # enable: true # basic: # enable: true # username: admin # password: 111111 debug_model: true server/visits/dmvisit_service/src/main/resources/application-devYL.yml
@@ -23,12 +23,12 @@ # username: 4derRb4Sw5EkqUMI # password: v50N97wf4av8Q8I4 knife4j: enable: true basic: enable: true username: admin password: 111111 #knife4j: # enable: true # basic: # enable: true # username: admin # password: 111111 debug_model: true ########################åæ¥æ°æ®æ¨¡å¼ ######################## server/visits/dmvisit_service/src/main/resources/application-pro.yml
@@ -13,12 +13,12 @@ port: 6379 password: timeout: 5000 # è¿æ¥æ± ä¸çæå°ç©ºé²è¿æ¥ knife4j: enable: true basic: enable: true username: admin password: doumee@168.com #knife4j: # enable: true # basic: # enable: true # username: admin # password: doumee@168.com debug_model: true server/visits/dmvisit_service/src/main/resources/application-test.yml
@@ -23,12 +23,12 @@ # username: 4derRb4Sw5EkqUMI # password: v50N97wf4av8Q8I4 knife4j: enable: true basic: enable: true username: admin password: 111111 #knife4j: # enable: true # basic: # enable: true # username: admin # password: 111111 debug_model: true server/visits/dmvisit_service/src/main/resources/application-testYL.yml
@@ -23,12 +23,12 @@ # username: 4derRb4Sw5EkqUMI # password: v50N97wf4av8Q8I4 knife4j: enable: true basic: enable: true username: admin password: 111111 #knife4j: # enable: true # basic: # enable: true # username: admin # password: 111111 debug_model: true ########################åæ¥æ°æ®æ¨¡å¼ ######################## server/visits/dmvisit_web/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
@@ -8,17 +8,12 @@ import org.springframework.context.annotation.Configuration; import springfox.documentation.RequestHandler; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.ParameterBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.oas.annotations.EnableOpenApi; import springfox.documentation.schema.ModelRef; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Parameter; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import java.util.ArrayList; import java.util.List; import java.util.function.Predicate; /** @@ -51,29 +46,31 @@ .version(version) .build(); } @Bean public Docket getDocket3() { /* @Bean public Docket getDocket() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(this.getApiInfo()).groupName("ãå°ç¨åºæ¥å£APIã") .apiInfo(this.getApiInfo()).groupName("ãç³»ç»ç®¡çæ¥å£APIã") .host(host) .select() .apis( basePackage("com.doumee.api.web")) .apis( basePackage("com.doumee.api.system;")) // 设置éè¦è¢«æ«æçç±»ï¼è¿é设置为添å äº@Api注解çç±» // .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) .paths(PathSelectors.any()) .build() .globalOperationParameters(this.getParameterList()); } private List<Parameter> getParameterList() { ParameterBuilder tokenPar = new ParameterBuilder(); List<Parameter> pars = new ArrayList<>(); tokenPar.name("token").description("令ç").modelRef(new ModelRef("string")).defaultValue("设置tokené»è®¤å¼").modelRef(new ModelRef("string")).parameterType("header").required(false).build(); pars.add(tokenPar.build()); return pars; } .build(); }*/ @Bean public Docket getDocket2() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(this.getApiInfo()).groupName("default") .host(host) .select() .apis( basePackage("com.doumee.api.system;com.doumee.api.business;com.doumee.api.common")) // 设置éè¦è¢«æ«æçç±»ï¼è¿é设置为添å äº@Api注解çç±» // .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) .paths(PathSelectors.any()) .build(); } /* @Bean public Docket getDocket1() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(this.getApiInfo()).groupName("ãå ¬å ±æ¥å£APIã") @@ -84,7 +81,7 @@ // .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) .paths(PathSelectors.any()) .build(); } }*/ /** * éåbasePackageæ¹æ³ï¼ä½¿è½å¤å®ç°å¤å 访é®ï¼å¤å¶è´´ä¸å» * @author teavamc server/visits/pom.xml
@@ -21,10 +21,6 @@ <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.3.12.RELEASE</version> <type>pom</type> @@ -49,6 +45,12 @@ <!-- <version>2.2.7.RELEASE</version>--> </dependency> <!-- æ¥å£ææ¡£ --> <!--dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId> <version>4.3.0</version> </dependency>--> </dependencies> <properties> <maven.compiler.source>8</maven.compiler.source>