From 9c7f5f394387099037d4af06f7abefc1b78628ea Mon Sep 17 00:00:00 2001
From: nidapeng <jp@doumee.com>
Date: 星期四, 25 四月 2024 15:45:42 +0800
Subject: [PATCH] 最新版本
---
server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemLoginLogController.java | 47 +
server/system_service/pom.xml | 17
server/visits/dmvisit_admin/src/main/java/com/doumee/config/swagger/SwaggerConfig.java | 24
server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemRoleController.java | 111 +++
server/meeting/meeting_service/src/main/resources/application-dev.yml | 14
server/system_service/src/main/java/com/doumee/api/system/NoticesController.java | 4
server/visits/dmvisit_admin/src/main/java/com/doumee/api/timer/QuartzController.java | 0
server/meeting/meeting_admin/src/main/java/com/doumee/config/swagger/SwaggerConfig.java | 13
server/system_service/src/main/java/com/doumee/api/system/SystemController.java | 3
server/visits/dmvisit_admin/src/main/java/com/doumee/api/BaseController.java | 11
server/visits/dmvisit_service/src/main/resources/application-testYL.yml | 12
server/meeting/meeting_service/src/main/resources/application-test.yml | 12
server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerHandler.java | 46 +
server/system_gateway/src/main/resources/application-dev.yml | 12
server/meeting/meeting_service/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.java | 2
server/system_service/src/main/java/com/doumee/api/system/SystemPermissionController.java | 2
server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemTraceLogController.java | 46 +
server/visits/pom.xml | 10
server/meeting/meeting_admin/src/main/java/com/doumee/config/shiro/ShiroConfig.java | 1
server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemMonitorController.java | 31
server/meeting/meeting_admin/src/main/java/com/doumee/api/common/PublicController.java | 163 +++-
server/system_gateway/src/main/resources/bootstrap.yml | 51 +
server/system_service/src/main/java/com/doumee/api/system/SystemMenuController.java | 2
server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemDictController.java | 82 ++
server/meeting/meeting_web/src/main/java/com/doumee/config/swagger/SwaggerConfig.java | 14
server/visits/dmvisit_service/src/main/resources/application-devYL.yml | 12
server/system_service/src/main/java/com/doumee/core/utils/kuaidi100/ExpressUtils.java | 3
server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerResourceConfig.java | 49 +
server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemDepartmentController.java | 109 +++
server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemUserController.java | 141 ++++
server/meeting/meeting_service/src/main/resources/application-pro.yml | 14
server/visits/dmvisit_service/src/main/resources/application-dev.yml | 12
server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemPositionController.java | 106 +++
server/meeting/pom.xml | 12
server/visits/dmvisit_service/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.java | 2
server/visits/dmvisit_service/src/main/resources/application-pro.yml | 12
server/visits/dmvisit_admin/src/main/resources/bootstrap.yml | 43 +
server/meeting/meeting_admin/src/main/resources/bootstrap.yml | 6
server/system_gateway/src/main/resources/application-test.yml | 12
server/system_service/src/main/java/com/doumee/dao/system/model/SystemDataPermission.java | 3
server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemPermissionController.java | 91 ++
server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerHeaderFilter.java | 41 +
server/meeting/meeting_admin/src/main/java/com/doumee/api/system/NoticesController.java | 92 ++
server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemController.java | 69 +
server/visits/dmvisit_admin/src/main/java/com/doumee/api/common/PublicController.java | 7
server/meeting/meeting_admin/src/main/java/com/doumee/api/timer/QuartzController.java | 0
server/visits/dmvisit_web/src/main/java/com/doumee/config/swagger/SwaggerConfig.java | 45
server/system_service/src/main/java/com/doumee/api/system/SystemDictDataController.java | 2
server/system_service/src/main/java/com/doumee/api/system/SystemRoleController.java | 2
server/system_service/src/main/java/com/doumee/api/system/SystemUserController.java | 2
server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemDataPermissionController.java | 106 +++
server/visits/dmvisit_service/src/main/resources/application-test.yml | 12
server/system_service/src/main/java/com/doumee/api/system/SystemDataPermissionController.java | 3
server/system_service/src/main/java/com/doumee/api/system/SystemPositionController.java | 2
server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemMenuController.java | 100 ++
server/system_gateway/src/main/resources/application-pro.yml | 12
server/system_gateway/src/main/java/com/doumee/SystemGatewayApplication.java | 4
server/system_gateway/pom.xml | 5
/dev/null | 85 --
server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemDictDataController.java | 97 ++
server/meeting/meeting_admin/src/main/java/com/doumee/api/BaseController.java | 11
server/system_gateway/src/main/resources/application.yml | 6
server/meeting/meeting_admin/src/main/resources/application.yml | 9
63 files changed, 1,748 insertions(+), 321 deletions(-)
diff --git a/server/meeting/meeting_admin/src/main/java/com/doumee/api/BaseController.java b/server/meeting/meeting_admin/src/main/java/com/doumee/api/BaseController.java
index fd5ef6c..a390450 100644
--- a/server/meeting/meeting_admin/src/main/java/com/doumee/api/BaseController.java
+++ b/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;
}
diff --git a/server/meeting/meeting_admin/src/main/java/com/doumee/api/common/PublicController.java b/server/meeting/meeting_admin/src/main/java/com/doumee/api/common/PublicController.java
index 85b332f..a446dbd 100644
--- a/server/meeting/meeting_admin/src/main/java/com/doumee/api/common/PublicController.java
+++ b/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,52 +48,113 @@
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/ (鐢ㄦ埛锛塻hop/ 锛堝簵閾猴級system/ (绯荤粺閰嶇疆绛夛級activity/ 锛堝彂鐜帮級commet/ (璇勮锛塷ther/ 锛堝叾浠栵級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 = "涓婁紶鏂囦欢鍒癋TP")
+ @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")) {
- context.put("code", 0);
- context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡涓婁紶鏈夎锛�");
+ 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("銆愪笂浼燜TP澶辫触銆�======================"+e.getMessage());
}
- 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());
+ context.put("code", 0);
+ context.put("message", "涓婁紶澶辫触");
+ context.put("errno",0);
+ writerJson(response, context);
+ return;
}
+
public void upload(HttpServletRequest request, HttpServletResponse response, String folder, String bucketName,
- String access_id, String access_key, String resourcePath, String endpoint) throws Exception {
+ String access_id, String access_key, String resourcePath, String endpoint) throws Exception {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
Map<String, Object> context = new HashMap<>();
@@ -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;
}
-
-
}
diff --git a/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/NoticesController.java b/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/NoticesController.java
new file mode 100644
index 0000000..6f3811e
--- /dev/null
+++ b/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));
+ }
+}
diff --git a/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemController.java b/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemController.java
new file mode 100644
index 0000000..8b7ba74
--- /dev/null
+++ b/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());
+ }
+}
diff --git a/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemDataPermissionController.java b/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemDataPermissionController.java
new file mode 100644
index 0000000..fcb5b7c
--- /dev/null
+++ b/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());
+ }
+}
diff --git a/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemDepartmentController.java b/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemDepartmentController.java
new file mode 100644
index 0000000..f013ef7
--- /dev/null
+++ b/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));
+ }
+}
diff --git a/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemDictController.java b/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemDictController.java
new file mode 100644
index 0000000..71a297a
--- /dev/null
+++ b/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));
+ }
+}
diff --git a/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemDictDataController.java b/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemDictDataController.java
new file mode 100644
index 0000000..1b44045
--- /dev/null
+++ b/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 = "鏁版嵁瀛楀吀鍊糎5_LINK_ADDR", required = true),
+ @ApiImplicitParam(paramType = "query", dataType = "String", name = "dictCode", value = "绯荤粺瀛楀吀鍊糞YSTEM", required = true)
+ })
+ public ApiResponse<SystemDictData> getSystemDictData(@RequestParam String dictCode, @RequestParam String label) {
+ return ApiResponse.success(systemDictDataBiz.queryByCode(dictCode,label));
+ }
+
+
+}
diff --git a/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemLoginLogController.java b/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemLoginLogController.java
new file mode 100644
index 0000000..3949e25
--- /dev/null
+++ b/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);
+ }
+}
diff --git a/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemMenuController.java b/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemMenuController.java
new file mode 100644
index 0000000..5e4cf01
--- /dev/null
+++ b/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);
+ }
+
+}
diff --git a/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemMonitorController.java b/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemMonitorController.java
new file mode 100644
index 0000000..b16d68b
--- /dev/null
+++ b/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());
+ }
+}
diff --git a/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemPermissionController.java b/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemPermissionController.java
new file mode 100644
index 0000000..327e24a
--- /dev/null
+++ b/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));
+ }
+}
diff --git a/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemPositionController.java b/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemPositionController.java
new file mode 100644
index 0000000..4670e06
--- /dev/null
+++ b/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));
+ }
+}
diff --git a/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemRoleController.java b/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemRoleController.java
new file mode 100644
index 0000000..a81ad34
--- /dev/null
+++ b/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));
+ }
+}
diff --git a/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemTraceLogController.java b/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemTraceLogController.java
new file mode 100644
index 0000000..e4745dc
--- /dev/null
+++ b/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);
+ }
+}
diff --git a/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemUserController.java b/server/meeting/meeting_admin/src/main/java/com/doumee/api/system/SystemUserController.java
new file mode 100644
index 0000000..a2cca7e
--- /dev/null
+++ b/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));
+ }
+}
diff --git a/server/system_service/src/main/java/com/doumee/api/timer/QuartzController.java b/server/meeting/meeting_admin/src/main/java/com/doumee/api/timer/QuartzController.java
similarity index 100%
copy 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
diff --git a/server/meeting/meeting_admin/src/main/java/com/doumee/config/shiro/ShiroConfig.java b/server/meeting/meeting_admin/src/main/java/com/doumee/config/shiro/ShiroConfig.java
index bd5138b..155b705 100644
--- a/server/meeting/meeting_admin/src/main/java/com/doumee/config/shiro/ShiroConfig.java
+++ b/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");
diff --git a/server/meeting/meeting_admin/src/main/java/com/doumee/config/swagger/SwaggerConfig.java b/server/meeting/meeting_admin/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
index ea763a8..b150aea 100644
--- a/server/meeting/meeting_admin/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
+++ b/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("銆愮郴缁熺鐞嗘帴鍙PI銆�")
@@ -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("銆愪笟鍔$鐞嗘帴鍙PI銆�")
+ .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("銆愬叕鍏辨帴鍙PI銆�")
@@ -81,7 +82,7 @@
// .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
.paths(PathSelectors.any())
.build();
- }
+ }*/
/**
* 閲嶅啓basePackage鏂规硶锛屼娇鑳藉瀹炵幇澶氬寘璁块棶锛屽鍒惰创涓婂幓
* @author teavamc
diff --git a/server/meeting/meeting_admin/src/main/resources/application.yml b/server/meeting/meeting_admin/src/main/resources/application.yml
index 3f027c1..3dc0225 100644
--- a/server/meeting/meeting_admin/src/main/resources/application.yml
+++ b/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:
diff --git a/server/meeting/meeting_admin/src/main/resources/bootstrap.yml b/server/meeting/meeting_admin/src/main/resources/bootstrap.yml
index 1076d83..d788ad7 100644
--- a/server/meeting/meeting_admin/src/main/resources/bootstrap.yml
+++ b/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://
diff --git a/server/system_service/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.java b/server/meeting/meeting_service/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.java
similarity index 99%
rename from server/system_service/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.java
rename to server/meeting/meeting_service/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.java
index f80d6a1..20ddfd6 100644
--- a/server/system_service/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.java
+++ b/server/meeting/meeting_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;
diff --git a/server/meeting/meeting_service/src/main/resources/application-dev.yml b/server/meeting/meeting_service/src/main/resources/application-dev.yml
index 4f527ad..05b003f 100644
--- a/server/meeting/meeting_service/src/main/resources/application-dev.yml
+++ b/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
diff --git a/server/meeting/meeting_service/src/main/resources/application-pro.yml b/server/meeting/meeting_service/src/main/resources/application-pro.yml
index b3934c8..829aa61 100644
--- a/server/meeting/meeting_service/src/main/resources/application-pro.yml
+++ b/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
diff --git a/server/meeting/meeting_service/src/main/resources/application-test.yml b/server/meeting/meeting_service/src/main/resources/application-test.yml
index e4c1f69..e866548 100644
--- a/server/meeting/meeting_service/src/main/resources/application-test.yml
+++ b/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
diff --git a/server/meeting/meeting_web/src/main/java/com/doumee/config/swagger/SwaggerConfig.java b/server/meeting/meeting_web/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
index 97c15be..d7e0053 100644
--- a/server/meeting/meeting_web/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
+++ b/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());
}
}
+*/
diff --git a/server/meeting/pom.xml b/server/meeting/pom.xml
index 95adea5..5bb66d4 100644
--- a/server/meeting/pom.xml
+++ b/server/meeting/pom.xml
@@ -21,10 +21,6 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<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>
@@ -46,6 +42,12 @@
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<!-- <version>2.2.7.RELEASE</version>-->
</dependency>
-
+ <!-- Swagger 澧炲己knife4j 寰湇鍔tarter -->
+ <dependency>
+ <groupId>com.github.xiaoymin</groupId>
+ <artifactId>knife4j-micro-spring-boot-starter</artifactId>
+ <version>3.0.3</version>
+ <scope>compile</scope>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
diff --git a/server/system_gateway/pom.xml b/server/system_gateway/pom.xml
index 34afe2f..1a44c9c 100644
--- a/server/system_gateway/pom.xml
+++ b/server/system_gateway/pom.xml
@@ -26,11 +26,10 @@
</exclusion>
</exclusions>
</dependency>
- <!-- <dependency>
+ <!-- <dependency>
<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>
diff --git a/server/system_gateway/src/main/java/com/doumee/SystemGatewayApplication.java b/server/system_gateway/src/main/java/com/doumee/SystemGatewayApplication.java
index c32da4a..5e2618a 100644
--- a/server/system_gateway/src/main/java/com/doumee/SystemGatewayApplication.java
+++ b/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);
diff --git a/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java b/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java
deleted file mode 100644
index 30d7dc0..0000000
--- a/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.doumee.config.shiro;
-
-import com.alibaba.fastjson.JSON;
-import com.doumee.core.model.ApiResponse;
-import org.apache.shiro.web.filter.authc.FormAuthenticationFilter;
-import org.springframework.http.HttpStatus;
-
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Shiro璁よ瘉杩囨护鍣紝澶勭悊鏈璇佹儏鍐电殑鍝嶅簲
- * @author Eva.Caesar Liu
- * @date 2023/04/17 12:11
- */
-public class ShiroAuthFilter extends FormAuthenticationFilter {
-
- public ShiroAuthFilter() {
- super();
- }
-
- @Override
- protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
- HttpServletResponse servletResponse = (HttpServletResponse) response;
- servletResponse.setHeader("content-type", "application/json;charset=UTF-8");
- servletResponse.getWriter().write(JSON.toJSONString(ApiResponse.failed(HttpStatus.UNAUTHORIZED.value(), "鏈櫥褰曟垨鐧诲綍淇℃伅宸茶繃鏈�")));
- return Boolean.FALSE;
- }
-}
diff --git a/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroCache.java b/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroCache.java
deleted file mode 100644
index 4e61661..0000000
--- a/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroCache.java
+++ /dev/null
@@ -1,159 +0,0 @@
-package com.doumee.config.shiro;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shiro.cache.Cache;
-import org.apache.shiro.cache.CacheException;
-import org.apache.shiro.subject.PrincipalCollection;
-import org.apache.shiro.util.CollectionUtils;
-import org.springframework.context.annotation.Scope;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.serializer.SerializationException;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-import java.io.Serializable;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Shiro缂撳瓨
- * @author Eva.Caesar Liu
- * @date 2023/04/17 12:11
- */
-@Scope(value = "prototype")
-@Slf4j
-@Component
-public class ShiroCache implements Cache<Object, Serializable> {
-
- private String keyPrefix = "";
-
- @Resource(name="sessionRedisTemplate")
- private RedisTemplate<Object, Serializable> redisTemplate;
-
- public ShiroCache () {
- log.debug("ShiroCache: new, keyPrefix = [" + keyPrefix + "]");
- }
-
- public ShiroCache(String keyPrefix) {
- log.debug("ShiroCache: new, keyPrefix = [" + keyPrefix + "]");
- this.keyPrefix = keyPrefix;
- }
-
- @Override
- public Serializable get(Object key) throws CacheException {
- if (key == null) {
- return null;
- }
- return redisTemplate.opsForValue().get(getKey(key));
- }
-
- @Override
- public Serializable put(Object key, Serializable value) throws CacheException {
- if (key == null) {
- return null;
- }
- redisTemplate.opsForValue().set(getKey(key), value);
- return value;
- }
-
- public Serializable put(Object key, Serializable value, int timeout) throws CacheException {
- if (key == null) {
- return null;
- }
- redisTemplate.opsForValue().set(getKey(key), value, timeout, TimeUnit.SECONDS);
- return value;
- }
-
- @Override
- public void clear() throws CacheException {
- Set<Object> keys = this.keys();
- redisTemplate.delete(keys);
- }
-
- @Override
- public int size() {
- return this.keys().size();
- }
-
- @Override
- public Set<Object> keys() {
- Set<Object> keys = redisTemplate.keys(keyPrefix + "*");
- if (CollectionUtils.isEmpty(keys)) {
- return Collections.emptySet();
- }
- return keys;
- }
-
- @Override
- public Collection<Serializable> values() {
- Collection<Serializable> values = new ArrayList<>();
- Set<Object> keys = this.keys();
- if (CollectionUtils.isEmpty(keys)) {
- return values;
- }
- for (Object k : keys) {
- values.add(redisTemplate.opsForValue().get(k));
- }
- return values;
- }
-
- @Override
- public Serializable remove(Object key) throws CacheException {
- if (key == null) {
- return null;
- }
- Serializable value = this.get(getKey(key));
- redisTemplate.delete(getKey(key));
- return value;
- }
-
- private Object getKey (Object key) {
- if (key instanceof PrincipalCollection) {
- return this.keyPrefix + getRedisKeyFromPrincipalIdField((PrincipalCollection)key);
- }
- return (key instanceof String ? (this.keyPrefix + key) : key);
- }
-
- /**
- * 鑾峰彇redis cache key
- */
- private String getRedisKeyFromPrincipalIdField(PrincipalCollection key) {
- Object principalObject = key.getPrimaryPrincipal();
- if (principalObject instanceof String) {
- return principalObject.toString();
- } else {
- Method pincipalIdGetter = this.getPrincipalIdGetter(principalObject);
- return this.getIdObj(principalObject, pincipalIdGetter);
- }
- }
-
- private Method getPrincipalIdGetter(Object principalObject) {
- Method pincipalIdGetter;
- String principalIdMethodName = this.getPrincipalIdMethodName();
-
- try {
- pincipalIdGetter = principalObject.getClass().getMethod(principalIdMethodName);
- return pincipalIdGetter;
- } catch (NoSuchMethodException e) {
- throw new SerializationException(e.getMessage(), e);
- }
- }
-
- private String getIdObj(Object principalObject, Method pincipalIdGetter) {
- try {
- Object idObj = pincipalIdGetter.invoke(principalObject);
- String redisKey = idObj.toString();
- return redisKey;
- } catch (Exception e) {
- throw new SerializationException(e.getMessage(), e);
- }
- }
-
- private String getPrincipalIdMethodName() {
- return "getId";
- }
-}
diff --git a/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java b/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java
deleted file mode 100644
index 4c11155..0000000
--- a/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.doumee.config.shiro;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shiro.cache.Cache;
-import org.apache.shiro.cache.CacheException;
-import org.apache.shiro.cache.CacheManager;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationContext;
-import org.springframework.stereotype.Component;
-
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * 鑷畾涔塖hiro CacheManager
- * @author Eva.Caesar Liu
- * @date 2023/04/17 12:11
- */
-@Slf4j
-@Component
-public class ShiroCacheManager implements CacheManager {
-
- private final ConcurrentMap<String, Cache> caches = new ConcurrentHashMap();
-
- private static ApplicationContext applicationContext;
-
- @Override
- public <K, V> Cache<K, V> getCache(String name) throws CacheException {
- log.debug("get cache, name=" + name);
- Cache cache = this.caches.get(name);
- if (cache == null) {
- cache = applicationContext.getBean(ShiroCache.class, "shiro:cache:");
- this.caches.put(name, cache);
- }
- return cache;
- }
-
- @Autowired
- public void setApplicationContext (ApplicationContext applicationContext) {
- if (ShiroCacheManager.applicationContext == null) {
- ShiroCacheManager.applicationContext = applicationContext;
- }
- }
-}
diff --git a/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroConfig.java b/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroConfig.java
deleted file mode 100644
index d156a78..0000000
--- a/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroConfig.java
+++ /dev/null
@@ -1,147 +0,0 @@
-package com.doumee.config.shiro;
-
-import org.apache.shiro.session.mgt.SessionManager;
-import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
-import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
-import org.apache.shiro.util.ThreadContext;
-import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
-import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.redis.connection.RedisConnectionFactory;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.serializer.StringRedisSerializer;
-
-import javax.servlet.Filter;
-import java.io.Serializable;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-/**
- * Shiro閰嶇疆
- * @author Eva.Caesar Liu
- * @date 2023/03/21 14:49
- */
-@Configuration
-public class ShiroConfig {
-
- @Value("${cache.session.expire}")
- private int sessionExpireTime;
-
- @Autowired
- private ShiroCredentialsMatcher shiroCredentialsMatcher;
-
- @Autowired
- private ShiroSessionDAO shiroSessionDAO;
-
- @Autowired
- private ShiroCacheManager shiroCacheManager;
-
- @Autowired
- private ShiroRealm shiroRealm;
-
- @Bean("sessionRedisTemplate")
- public RedisTemplate<Object, Serializable> sessionRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
- RedisTemplate<Object, Serializable> redisTemplate = new RedisTemplate<>();
- redisTemplate.setConnectionFactory(redisConnectionFactory);
- // 榛樿搴忓垪鍖栨柟寮�
- redisTemplate.setDefaultSerializer(new StringRedisSerializer());
- // 鍊煎簭鍒楀寲鏂瑰紡
- ShiroSessionSerializer serializer = new ShiroSessionSerializer();
- redisTemplate.setValueSerializer(serializer);
- redisTemplate.setHashValueSerializer(serializer);
- redisTemplate.afterPropertiesSet();
- return redisTemplate;
- }
-
- @Bean
- public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
- DefaultAdvisorAutoProxyCreator autoProxyCreator = new DefaultAdvisorAutoProxyCreator();
- autoProxyCreator.setProxyTargetClass(true);
- return autoProxyCreator;
- }
-
- @Bean
- public SessionManager sessionManager() {
- ShiroSessionManager sessionManager = new ShiroSessionManager();
- sessionManager.setSessionDAO(shiroSessionDAO);
- sessionManager.setGlobalSessionTimeout(sessionExpireTime*1000);
- // 鍒犻櫎澶辨晥鐨剆ession
- sessionManager.setDeleteInvalidSessions(true);
- return sessionManager;
- }
-
- @Bean
- public SecurityManager securityManager() {
- DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
- ThreadContext.bind(securityManager);//鍔犱笂杩欏彞浠g爜鎵嬪姩缁戝畾
- securityManager.setRealm(shiroRealm);
- securityManager.setSessionManager(this.sessionManager());
- securityManager.setCacheManager(shiroCacheManager);
- return securityManager;
- }
-
- @Bean
- public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
- ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
- shiroFilterFactoryBean.setSecurityManager(securityManager);
- Map<String, String> map = new LinkedHashMap<>();
- // 璺緞鎷︽埅閰嶇疆
- map.put("/system/login", "anon");
- map.put("/system/syncLingCountData", "anon");
- map.put("/system/wxLogin", "anon");
- map.put("/system/wxProgramLogin", "anon");
- map.put("/system/wxAccountLogin", "anon");
- map.put("/system/initCompany", "anon");
- map.put("/system/logout", "anon");
- map.put("/common/captcha", "anon");
- map.put("/cloud/**", "anon");
- map.put("/statistics/**", "anon");
- map.put("/business/hksync/push/**", "anon");
- map.put("/business/member/empowerByList", "anon");
- map.put("/dingding/push", "anon");
-// map.put("/ext/workorderExt/freshStatistics", "anon");
- map.put("/dingding/jsapiTicket", "anon");
- map.put("/dingding/ddLogin", "anon");
- map.put("/dingding/getDingdingCorpId", "anon");
- map.put("/lingyang/login", "anon");
- map.put("/lingyang/loginDemo", "anon");
- map.put("/lingyang/importBatch", "anon");
- map.put("/edgp/**", "anon");
- // - 鏀捐swagger
- map.put("/doc.html", "anon");
- map.put("/webjars/**", "anon");
- map.put("/template/**", "anon");
- map.put("/swagger-resources/**", "anon");
- map.put("/v2/api-docs/**", "anon");
- // - 鍏朵粬鎺ュ彛缁熶竴鎷︽埅
- map.put("/**", "authc");
- shiroFilterFactoryBean.setFilterChainDefinitionMap(map);
- // 娣诲姞璁よ瘉杩囨护鍣�
- Map<String, Filter> filters = new LinkedHashMap<>();
- filters.put("authc", new ShiroAuthFilter());
- shiroFilterFactoryBean.setFilters(filters);
- return shiroFilterFactoryBean;
- }
-
- @Bean
- public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
- AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
- authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
- return authorizationAttributeSourceAdvisor;
- }
-
- @Bean
- public ShiroSessionDAO getShiroSessionDAO () {
- shiroSessionDAO.setExpireTime(sessionExpireTime);
- return shiroSessionDAO;
- }
-
- @Bean
- public ShiroRealm getShiroRealm () {
- shiroRealm.setCredentialsMatcher(shiroCredentialsMatcher);
- return shiroRealm;
- }
-}
diff --git a/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java b/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java
deleted file mode 100644
index 09156e0..0000000
--- a/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.doumee.config.shiro;
-
-import com.doumee.core.utils.Utils;
-import com.doumee.dao.system.model.SystemUser;
-import com.doumee.service.system.SystemUserService;
-import org.apache.shiro.authc.AuthenticationInfo;
-import org.apache.shiro.authc.AuthenticationToken;
-import org.apache.shiro.authc.UsernamePasswordToken;
-import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Component;
-
-/**
- * Shiro瀵嗙爜姣斿澶勭悊
- * @author Eva.Caesar Liu
- * @date 2023/04/17 12:11
- */
-@Component
-public class ShiroCredentialsMatcher extends HashedCredentialsMatcher {
- @Lazy
- @Autowired
- private SystemUserService systemUserService;
-
- @Override
- public boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) {
- UsernamePasswordToken usernamePasswordToken = (UsernamePasswordToken) token;
- SystemUser queryUserDto = new SystemUser();
- queryUserDto.setUsername(usernamePasswordToken.getUsername());
- queryUserDto.setDeleted(Boolean.FALSE);
- SystemUser systemUser = systemUserService.findOne(queryUserDto);
- if (systemUser == null) {
- return Boolean.FALSE;
- }
- // 鍔犲瘑瀵嗙爜
- String pwd = Utils.Secure.encryptPassword(new String(usernamePasswordToken.getPassword()), systemUser.getSalt());
- // 姣旇緝瀵嗙爜
- return this.equals(pwd, systemUser.getPassword());
- }
-}
diff --git a/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroRealm.java b/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroRealm.java
deleted file mode 100644
index 690addf..0000000
--- a/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroRealm.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package com.doumee.config.shiro;
-
-import com.doumee.core.model.LoginUserInfo;
-import com.doumee.dao.system.model.SystemPermission;
-import com.doumee.dao.system.model.SystemRole;
-import com.doumee.dao.system.model.SystemUser;
-import com.doumee.service.system.SystemPermissionService;
-import com.doumee.service.system.SystemRoleService;
-import com.doumee.service.system.SystemUserService;
-import org.apache.shiro.authc.AuthenticationException;
-import org.apache.shiro.authc.AuthenticationInfo;
-import org.apache.shiro.authc.AuthenticationToken;
-import org.apache.shiro.authc.SimpleAuthenticationInfo;
-import org.apache.shiro.authz.AuthorizationInfo;
-import org.apache.shiro.authz.SimpleAuthorizationInfo;
-import org.apache.shiro.realm.AuthorizingRealm;
-import org.apache.shiro.subject.PrincipalCollection;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-/**
- * 鑷畾涔塕ealm锛屽鐞嗚璇佸拰鏉冮檺
- * @author Eva.Caesar Liu
- * @date 2023/03/21 14:49
- */
-@Component
-public class ShiroRealm extends AuthorizingRealm {
-
- @Lazy
- @Autowired
- private SystemUserService systemUserService;
-
- @Lazy
- @Autowired
- private SystemRoleService systemRoleService;
-
- @Lazy
- @Autowired
- private SystemPermissionService systemPermissionService;
-
- /**
- * 鏉冮檺澶勭悊
- * @author Eva.Caesar Liu
- * @date 2023/03/21 14:49
- */
- @Override
- protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
- LoginUserInfo loginUserInfo = (LoginUserInfo)principalCollection.getPrimaryPrincipal();
- // 璁剧疆鐢ㄦ埛瑙掕壊鍜屾潈闄�
- SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
- authorizationInfo.addRoles(loginUserInfo.getRoles());
- authorizationInfo.addStringPermissions(loginUserInfo.getPermissions());
- return authorizationInfo;
- }
-
- /**
- * 璁よ瘉澶勭悊
- * @author Eva.Caesar Liu
- * @date 2023/03/21 14:49
- */
- @Override
- protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
- // 鑾峰彇鐢ㄦ埛鍚�
- String username = authenticationToken.getPrincipal().toString();
- // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞�
- SystemUser queryDto = new SystemUser();
- queryDto.setUsername(username);
- queryDto.setDeleted(Boolean.FALSE);
- SystemUser user = systemUserService.findOne(queryDto);
- if (user == null) {
- return null;
- }
- // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
- List<SystemRole> roles = systemRoleService.findByUserId(user.getId());
- List<SystemPermission> permissions = systemPermissionService.findByUserId(user.getId());
- LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions);
- // 楠岃瘉鐢ㄦ埛
- return new SimpleAuthenticationInfo(userInfo, user.getPassword(), this.getName());
- }
-
-}
diff --git a/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java b/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java
deleted file mode 100644
index 1fe90bf..0000000
--- a/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package com.doumee.config.shiro;
-
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shiro.session.Session;
-import org.apache.shiro.session.UnknownSessionException;
-import org.apache.shiro.session.mgt.SimpleSession;
-import org.apache.shiro.session.mgt.eis.SessionDAO;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-/**
- * 鑷畾涔塖hiro SessionDAO锛屽皢浼氳瘽淇℃伅瀛樺叆缂撳瓨涓�
- * @author Eva.Caesar Liu
- * @date 2023/04/17 12:11
- */
-@Data
-@Slf4j
-@Component
-public class ShiroSessionDAO implements SessionDAO {
-
- private static final String KEY_PREFIX = "shiro:session:";
-
- @Autowired
- private ShiroCache shiroCache;
-
- private int expireTime = 60 * 60 * 24;
-
- @Autowired
- private ShiroTokenManager shiroTokenManager;
-
- @Override
- public Serializable create(Session session) {
- if (session == null) {
- log.error("session is null");
- throw new UnknownSessionException("session is null");
- }
- Serializable sessionId = shiroTokenManager.build();
- ((SimpleSession)session).setId(sessionId);
- this.saveSession(session);
- return sessionId;
- }
-
- @Override
- public Session readSession(Serializable sessionId) throws UnknownSessionException{
- if (sessionId == null) {
- log.warn("session id is null");
- return null;
- }
- if (sessionId instanceof String) {
- // 瀵筍essionId杩涜楠岃瘉锛堝彲鐢ㄤ簬闃叉Session鎹曡幏銆佹毚鍔涙崟鎹夌瓑涓�绯诲垪瀹夊叏闂锛屾渶缁堝畨鍏ㄦ�у彇鍐充簬check濡備綍瀹炵幇锛�
- shiroTokenManager.check((String) sessionId);
- }
- log.debug("read session from cache");
- Session session = getSessionFromCache(sessionId);
- if (session == null) {
- throw new UnknownSessionException("There is no session with id [" + sessionId + "]");
- }
- return session;
- }
-
- @Override
- public void update(Session session) throws UnknownSessionException {
- this.saveSession(session);
- }
-
- @Override
- public void delete(Session session) {
- if (session != null && session.getId() != null) {
- shiroCache.remove(KEY_PREFIX + session.getId());
- }
- }
-
- @Override
- public Collection<Session> getActiveSessions() {
- Set<Session> sessions = new HashSet<>();
- Set<Object> keys = shiroCache.keys();
- if (keys != null && keys.size() > 0) {
- Iterator iter = keys.iterator();
- while(iter.hasNext()) {
- sessions.add((Session) shiroCache.get(iter.next()));
- }
- }
- return sessions;
- }
-
- private void saveSession(Session session) throws UnknownSessionException {
- if (session == null || session.getId() == null) {
- log.error("session or session id is null");
- throw new UnknownSessionException("session or session id is null");
- }
- shiroCache.put(KEY_PREFIX + session.getId(), (SimpleSession)session, expireTime);
- }
-
- private Session getSessionFromCache (Serializable sessionId) {
- Serializable object = shiroCache.get(KEY_PREFIX + sessionId);
- Session session = null;
- if (object != null) {
- session = (Session)shiroCache.get(KEY_PREFIX + sessionId);
- }
- return session;
- }
-
- public void setExpireTime (int expireTime) {
- this.expireTime = expireTime;
- }
-}
diff --git a/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java b/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java
deleted file mode 100644
index 32b0379..0000000
--- a/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.doumee.config.shiro;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shiro.session.Session;
-import org.apache.shiro.session.mgt.DefaultSessionManager;
-import org.apache.shiro.session.mgt.SessionContext;
-import org.apache.shiro.session.mgt.SessionKey;
-import org.apache.shiro.web.servlet.Cookie;
-import org.apache.shiro.web.servlet.ShiroHttpServletRequest;
-import org.apache.shiro.web.servlet.SimpleCookie;
-import org.apache.shiro.web.session.mgt.WebSessionManager;
-import org.apache.shiro.web.util.WebUtils;
-
-import javax.servlet.ServletRequest;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.Serializable;
-
-/**
- * 鑷畾涔変細璇濈鐞嗗櫒
- * @author Eva.Caesar Liu
- * @date 2023/04/17 12:11
- */
-@Slf4j
-public class ShiroSessionManager extends DefaultSessionManager implements WebSessionManager {
-
- private static final String AUTH_TOKEN = "eva-auth-token";
-
- @Override
- protected void onStart(Session session, SessionContext context) {
- super.onStart(session, context);
- if (!WebUtils.isHttp(context)) {
- log.debug("SessionContext argument is not Http compatible or does not have an Http request/response pair. No session ID cookie will be set.");
- return;
- }
- HttpServletRequest request = WebUtils.getHttpRequest(context);
- HttpServletResponse response = WebUtils.getHttpResponse(context);
- Serializable sessionId = session.getId();
- this.storeSessionId(sessionId, request, response);
- request.removeAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_SOURCE);
- request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_IS_NEW, Boolean.TRUE);
- }
-
- @Override
- public Serializable getSessionId(SessionKey key) {
- Serializable sessionId = super.getSessionId(key);
- if (sessionId == null && WebUtils.isWeb(key)) {
- ServletRequest servletRequest = WebUtils.getRequest(key);
- if (!(servletRequest instanceof HttpServletRequest)) {
- log.trace("Can not get sessionId from header, the request is not HttpServletRequest");
- return null;
- }
- HttpServletRequest request = (HttpServletRequest) servletRequest;
- // 浠巆ookie涓幏鍙栬璇�
- javax.servlet.http.Cookie[] cookies = request.getCookies();
- if (cookies != null) {
- for (javax.servlet.http.Cookie cookie : cookies) {
- if (AUTH_TOKEN.equals(cookie.getName())) {
- return cookie.getValue();
- }
- }
- }
- // 浠巋eader涓幏鍙栬璇�
- return request.getHeader(AUTH_TOKEN);
- }
- return sessionId;
- }
- @Override
- public boolean isServletContainerSessions() {
- return false;
- }
-
- private void storeSessionId(Serializable currentId, HttpServletRequest request, HttpServletResponse response) {
- if (currentId == null) {
- String msg = "sessionId cannot be null when persisting for subsequent requests.";
- throw new IllegalArgumentException(msg);
- }
- Cookie cookie = new SimpleCookie(AUTH_TOKEN);
- cookie.setHttpOnly(false);
- String idString = currentId.toString();
- cookie.setValue(idString);
- cookie.saveTo(request, response);
- log.trace("Set session ID cookie for session with id {}", idString);
- }
-}
diff --git a/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroSessionSerializer.java b/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroSessionSerializer.java
deleted file mode 100644
index d334adf..0000000
--- a/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroSessionSerializer.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.doumee.config.shiro;
-
-import org.apache.commons.lang3.SerializationUtils;
-import org.apache.shiro.codec.Base64;
-import org.springframework.data.redis.serializer.RedisSerializer;
-import org.springframework.data.redis.serializer.SerializationException;
-
-import java.io.Serializable;
-import java.nio.charset.StandardCharsets;
-
-/**
- * Session搴忓垪鍖�
- * @author Eva.Caesar Liu
- * @date 2023/04/17 12:11
- */
-public class ShiroSessionSerializer implements RedisSerializer<Serializable> {
-
- @Override
- public byte[] serialize(Serializable obj) throws SerializationException {
- if (obj == null) {
- return new byte[0];
- }
- String sessionBase64 = Base64.encodeToString(SerializationUtils.serialize(obj));
- return sessionBase64.getBytes(StandardCharsets.UTF_8);
- }
-
- @Override
- public Serializable deserialize(byte[] bytes) throws SerializationException {
- if (bytes == null || bytes.length == 0) {
- return null;
- }
- String sessionString = new String(bytes, StandardCharsets.UTF_8);
- byte[] sessionBytes = Base64.decode(sessionString);
- return SerializationUtils.deserialize(sessionBytes);
- }
-}
diff --git a/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroToken.java b/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroToken.java
deleted file mode 100644
index 4a27415..0000000
--- a/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroToken.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.doumee.config.shiro;
-
-import com.doumee.core.model.LoginUserInfo;
-import org.apache.shiro.authc.UsernamePasswordToken;
-import org.springframework.stereotype.Component;
-
-/**
- * 鑷畾涔塗oken 锛屽鐞嗚璇佸拰鏉冮檺
- * @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
- */
-@Component
-public class ShiroToken extends UsernamePasswordToken {
-
- /**
- * 鍏徃ID
- */
- Integer companyId;
- Boolean isDdLogin;
- Boolean isWxLogin;
- LoginUserInfo updateUser;
-
- int updateFlag;
-
- public ShiroToken() {
- }
- public ShiroToken(Integer companyId, String username, String password, boolean isDdLogin, boolean isWxLogin) {
- super(username, password, false, (String)null);
- this.companyId = companyId;
- this.isDdLogin = isDdLogin;
- this.isWxLogin = isWxLogin;
- }
- public ShiroToken(LoginUserInfo user,int updateFlag) {
- super(user.getUsername(), "", false, (String)null);
- this.updateUser = user;
- this.updateFlag = updateFlag;
- this.isDdLogin = true;
- }
-
- public Boolean getDdLogin() {
- return isDdLogin;
- }
-
- public void setDdLogin(Boolean ddLogin) {
- isDdLogin = ddLogin;
- }
-
-
- public Boolean getWxLogin() {
- return isWxLogin;
- }
-
- public void setWxLogin(Boolean wxLogin) {
- isWxLogin = wxLogin;
- }
-
- public Integer getCompanyId() {
- return companyId;
- }
-
- public void setCompanyId(Integer companyId) {
- this.companyId = companyId;
- }
-
- public LoginUserInfo getUpdateUser() {
- return updateUser;
- }
-
- public void setUpdateUser(LoginUserInfo updateUser) {
- this.updateUser = updateUser;
- }
-
- public int getUpdateFlag() {
- return updateFlag;
- }
-
- public void setUpdateFlag(int updateFlag) {
- this.updateFlag = updateFlag;
- }
-}
diff --git a/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java b/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java
deleted file mode 100644
index ba35da6..0000000
--- a/server/system_gateway/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.doumee.config.shiro;
-
-import com.doumee.core.exception.UnSafeSessionException;
-import org.springframework.stereotype.Component;
-
-import java.util.UUID;
-
-/**
- * 榛樿Token绠$悊鍣�
- * @author Eva.Caesar Liu
- * @date 2023/04/17 12:11
- */
-@Component
-public class ShiroTokenManager {
-
- String build() {
- return UUID.randomUUID().toString();
- }
-
- void check(String token) throws UnSafeSessionException {
- if (token == null || token.length() != 36) {
- throw new UnSafeSessionException();
- }
- }
-}
diff --git a/server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerConfig.java b/server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
deleted file mode 100644
index 1a237ee..0000000
--- a/server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
+++ /dev/null
@@ -1,123 +0,0 @@
-package com.doumee.config.swagger;
-
-import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import springfox.documentation.RequestHandler;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.oas.annotations.EnableOpenApi;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
-
-import java.util.function.Predicate;
-
-/**
- * Swagger閰嶇疆
- * @author Eva.Caesar Liu
- * @date 2022/03/11 10:24
- */
-@Configuration
-@EnableOpenApi
-@EnableKnife4j
-public class SwaggerConfig {
-
- @Value("${swagger.host:}")
- private String host;
-
- @Value("${swagger.title:鎺ュ彛鏂囨。}")
- private String title;
-
- @Value("${swagger.description:}")
- private String description;
-
- @Value("${project.version:}")
- private String version;
-
- @Bean
- public ApiInfo getApiInfo() {
- return new ApiInfoBuilder()
- .title(title)
- .description(description)
- .version(version)
- .build();
- }
- @Bean
- public Docket getDocket() {
- return new Docket(DocumentationType.SWAGGER_2)
- .apiInfo(this.getApiInfo()).groupName("銆愮郴缁熺鐞嗘帴鍙PI銆�")
- .host(host)
- .select()
- .apis( basePackage("com.doumee.api.system;"))
- // 璁剧疆闇�瑕佽鎵弿鐨勭被锛岃繖閲岃缃负娣诲姞浜咢Api娉ㄨВ鐨勭被
-// .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
- .paths(PathSelectors.any())
- .build();
- }
- @Bean
- public Docket getDocket2() {
- return new Docket(DocumentationType.SWAGGER_2)
- .apiInfo(this.getApiInfo()).groupName("銆愪笟鍔$鐞嗘帴鍙PI銆�")
- .host(host)
- .select()
- .apis( basePackage("com.doumee.api.business;"))
- // 璁剧疆闇�瑕佽鎵弿鐨勭被锛岃繖閲岃缃负娣诲姞浜咢Api娉ㄨВ鐨勭被
-// .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
- .paths(PathSelectors.any())
- .build();
- }
- @Bean
- public Docket getDocket4() {
- return new Docket(DocumentationType.SWAGGER_2)
- .apiInfo(this.getApiInfo()).groupName("銆愬畾鏃朵换鍔℃帴鍙PI銆�")
- .host(host)
- .select()
- .apis( basePackage("com.doumee.api.timer;"))
- // 璁剧疆闇�瑕佽鎵弿鐨勭被锛岃繖閲岃缃负娣诲姞浜咢Api娉ㄨВ鐨勭被
-// .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
- .paths(PathSelectors.any())
- .build();
- }
- @Bean
- public Docket getDocket1() {
- return new Docket(DocumentationType.SWAGGER_2)
- .apiInfo(this.getApiInfo()).groupName("銆愬叕鍏辨帴鍙PI銆�")
- .host(host)
- .select()
- .apis( basePackage("com.doumee.api.common"))
- // 璁剧疆闇�瑕佽鎵弿鐨勭被锛岃繖閲岃缃负娣诲姞浜咢Api娉ㄨВ鐨勭被
-// .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
- .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);
- }
-
- private static Function<Class<?>, Boolean> handlerPackage(String basePackage) {
- return input -> {
- // 寰幆鍒ゆ柇鍖归厤
- for (String strPackage : basePackage.split(";")) {
- boolean isMatch = input.getPackage().getName().startsWith(strPackage);
- if (isMatch) {
- return true;
- }
- }
- return false;
- };
- }
-
- private static Optional<? extends Class<?>> declaringClass(RequestHandler input) {
- return Optional.fromNullable(input.declaringClass());
- }
-}
diff --git a/server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerHandler.java b/server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerHandler.java
new file mode 100644
index 0000000..f23cb47
--- /dev/null
+++ b/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)));
+ }
+}
\ No newline at end of file
diff --git a/server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerHeaderFilter.java b/server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerHeaderFilter.java
new file mode 100644
index 0000000..d0ca87e
--- /dev/null
+++ b/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);
+ };
+ }
+
+}
\ No newline at end of file
diff --git a/server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java b/server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java
deleted file mode 100644
index 8fd55c6..0000000
--- a/server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.doumee.config.swagger;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-import org.springframework.web.servlet.HandlerInterceptor;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
-/**
- * Swagger鎷︽埅鍣�
- * @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
- */
-@Slf4j
-@Component
-public class SwaggerInterceptor implements HandlerInterceptor {
-
- @Value("${swagger.enabled:false}")
- private Boolean enabledSwagger;
-
- @Value("${swagger.redirect-uri:/}")
- private String redirectUri;
-
- @Override
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
- if (!enabledSwagger) {
- String uri = request.getContextPath();
- if (StringUtils.isNotBlank(redirectUri))
- uri = request.getContextPath() + redirectUri;
- if (StringUtils.isBlank(uri))
- uri = "/";
- try {
- response.sendRedirect(uri);
- } catch (IOException e) {
- log.error(String.format("Redirect to '%s' for swagger throw an exception : %s", uri, e.getMessage()), e);
- }
- return Boolean.FALSE;
- }
- return Boolean.TRUE;
- }
-}
diff --git a/server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java b/server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java
deleted file mode 100644
index f67e9a8..0000000
--- a/server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.doumee.config.swagger;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-/**
- * Swagger鎷︽埅鍣ㄩ厤缃�
- * @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
- */
-@Configuration
-public class SwaggerInterceptorConfig implements WebMvcConfigurer {
-
- @Autowired
- private SwaggerInterceptor swaggerInterceptor;
-
- @Override
- public void addInterceptors(InterceptorRegistry registry) {
- registry.addInterceptor(swaggerInterceptor).addPathPatterns("/swagger-ui.html", "/doc.html");
- }
-}
diff --git a/server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerResourceConfig.java b/server/system_gateway/src/main/java/com/doumee/config/swagger/SwaggerResourceConfig.java
new file mode 100644
index 0000000..43fd81a
--- /dev/null
+++ b/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;
+ }
+}
diff --git a/server/system_gateway/src/main/resources/application-dev.yml b/server/system_gateway/src/main/resources/application-dev.yml
index fad750a..ca88fb1 100644
--- a/server/system_gateway/src/main/resources/application-dev.yml
+++ b/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
diff --git a/server/system_gateway/src/main/resources/application-pro.yml b/server/system_gateway/src/main/resources/application-pro.yml
index b3934c8..3eefb0d 100644
--- a/server/system_gateway/src/main/resources/application-pro.yml
+++ b/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
diff --git a/server/system_gateway/src/main/resources/application-test.yml b/server/system_gateway/src/main/resources/application-test.yml
index e4c1f69..e866548 100644
--- a/server/system_gateway/src/main/resources/application-test.yml
+++ b/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
diff --git a/server/system_gateway/src/main/resources/application.yml b/server/system_gateway/src/main/resources/application.yml
index d1e7a41..77b45bc 100644
--- a/server/system_gateway/src/main/resources/application.yml
+++ b/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:
diff --git a/server/system_gateway/src/main/resources/bootstrap.yml b/server/system_gateway/src/main/resources/bootstrap.yml
index d6bacc9..083a9d5 100644
--- a/server/system_gateway/src/main/resources/bootstrap.yml
+++ b/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:
+ # 绗竴涓厤缃紝寮�鍚痝ateway鑱氬悎缁勪欢
+ enabled: true
+ # 绗簩琛岄厤缃紝璁剧疆鑱氬悎妯″紡閲囩敤discover鏈嶅姟鍙戠幇鐨勬ā寮�
+ strategy: discover
+ # 鏈嶅姟鍙戠幇妯″紡鐨勯厤缃�
+ discover:
+ # 绗笁琛岄厤缃紝寮�鍚痙iscover妯″紡
+ 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
diff --git a/server/system_service/pom.xml b/server/system_service/pom.xml
index 0f8156b..d54b462 100644
--- a/server/system_service/pom.xml
+++ b/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>
@@ -98,12 +102,21 @@
</dependency>
<!-- swagger -->
- <dependency>
+ <dependency>
<groupId>com.github.xiaoymin</groupId>
<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>
diff --git a/server/system_service/src/main/java/com/doumee/api/common/CaptchaController.java b/server/system_service/src/main/java/com/doumee/api/common/CaptchaController.java
deleted file mode 100644
index 209d40f..0000000
--- a/server/system_service/src/main/java/com/doumee/api/common/CaptchaController.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.doumee.api.common;
-
-import com.doumee.api.BaseController;
-import com.doumee.core.annotation.trace.Trace;
-import com.doumee.core.model.ApiResponse;
-import com.doumee.service.common.CaptchaService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-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("/common")
-public class CaptchaController extends BaseController {
- @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());
- }
-}
diff --git a/server/system_service/src/main/java/com/doumee/api/common/PublicController.java b/server/system_service/src/main/java/com/doumee/api/common/PublicController.java
deleted file mode 100644
index a446dbd..0000000
--- a/server/system_service/src/main/java/com/doumee/api/common/PublicController.java
+++ /dev/null
@@ -1,377 +0,0 @@
-package com.doumee.api.common;
-
-import com.alibaba.fastjson.JSONObject;
-import com.doumee.api.BaseController;
-import com.doumee.biz.system.SystemDictDataBiz;
-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.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.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;
-
-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.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.UUID;
-
-/**
- * @author Eva.Caesar Liu
- * @date 2023/02/14 11:14
- */
-@Api(tags = "鍏叡鎺ュ彛")
-@Trace(exclude = true)
-@RestController
-@RequestMapping("/public")
-@Slf4j
-public class PublicController extends BaseController {
-
-
- @Autowired
- 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 = "/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());
-// }
-
-
-
-
- public static FtpUtil ftp = null;
-
- @ApiOperation(value = "涓婁紶鏂囦欢鍒癋TP")
- @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<>();
- 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("銆愪笂浼燜TP澶辫触銆�======================"+e.getMessage());
- }
- context.put("code", 0);
- context.put("message", "涓婁紶澶辫触");
- context.put("errno",0);
- writerJson(response, context);
- return;
- }
-
-
-
- public void upload(HttpServletRequest request, HttpServletResponse response, String folder, String bucketName,
- String access_id, String access_key, String resourcePath, String endpoint) throws Exception {
- response.setCharacterEncoding("UTF-8");
- response.setContentType("text/html;charset=UTF-8");
- Map<String, Object> context = new HashMap<>();
- CommonsMultipartResolver multipartResovler = new CommonsMultipartResolver();
- if (multipartResovler.isMultipart(request)) {
- MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
- Iterator<String> it = multipartRequest.getFileNames();
- while (it.hasNext()) {
- MultipartFile file = multipartRequest.getFile((String) it.next());// file
- // multipartRequest.getFile((String)
- // it.next());
- if (file != null) {
- // 1銆佷笂浼犲埌鏈嶅姟鍣ㄤ复鏃舵枃浠跺す
- String uploadFileName = file.getOriginalFilename();
- String originname = uploadFileName;
- if (originname.lastIndexOf("/") >= 0) {
- originname = originname.substring(originname.lastIndexOf("/") + 1);
- }
- String nfix = "";// 鍚庣紑鍚�
- if (StringUtils.isNotBlank(uploadFileName)) {
- nfix = uploadFileName.substring(uploadFileName.lastIndexOf("."));
- }
- if (StringUtils.equalsIgnoreCase(nfix, ".exe")) {
- context.put("code", 4000);
- context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".exe\"涓婁紶鏈夎锛�");
- return;
- }
- if (StringUtils.equalsIgnoreCase(nfix, ".dll")) {
- context.put("code", 4000);
- context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".dll\"涓婁紶鏈夎锛�");
- return;
- }
- String nowDate = DateUtil.getNowShortDate();// 褰撳墠鏃堕棿锛堝勾鏈堟棩锛�
- String fileName = UUID.randomUUID().toString() + nfix;
- String tempFileName = nowDate + "/" + fileName;
- String key = folder + tempFileName;// 鏂囦欢鍚�
- ALiYunUtil obs = new ALiYunUtil(endpoint,access_id, access_key);
- if (obs.uploadOnlineObject(file.getInputStream(),bucketName, key,null)) {
- // 绉诲姩鎴愬姛,杩斿洖鏂囦欢鍚�
- // sendSuccessMessage(response, resourcePath+key);
- context.put("success", true);
- context.put("code", 200);
- context.put("errno",0);
- JSONObject fileJSON = new JSONObject();
- fileJSON.put("url", resourcePath + key);
- fileJSON.put("imgaddr", tempFileName);
- fileJSON.put("imgname", fileName);
- fileJSON.put("originname", originname);
- context.put("data",fileJSON);
- context.put("message","璇锋眰鎴愬姛");
- writerJson(response, context);
- return;
- } else {
- // 绉诲姩澶辫触
- context.put("code", 0);
- context.put("message", "涓婁紶澶辫触");
- writerJson(response, context);
- return;
- }
- }
-
- }
- }
- context.put("code", 0);
- context.put("message", "涓婁紶澶辫触");
- context.put("errno",0);
- writerJson(response, context);
- return;
- }
-
- public static void writerJson(HttpServletResponse response, Object object) {
- response.setContentType("application/json");
- writer(response, JSONObject.toJSONString(object));
- }
-
- private static void writer(HttpServletResponse response, String str) {
- try {
- StringBuffer result = new StringBuffer();
- //璁剧疆椤甸潰涓嶇紦瀛�
- response.setHeader("Pragma", "No-cache");
- response.setHeader("Cache-Control", "no-cache");
- response.setCharacterEncoding("UTF-8");
- PrintWriter out = null;
- out = response.getWriter();
- out.print(str);
- out.flush();
- out.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
-
-
-
- public void uploadFileLocal(HttpServletRequest request, String folder, HttpServletResponse response, String rootPath,String dir) throws Exception {
- response.setCharacterEncoding("UTF-8");
- response.setContentType("text/html;charset=UTF-8");
- CommonsMultipartResolver multipartResovler = new CommonsMultipartResolver();
- Map<String, Object> context = new HashMap<>();
- if (multipartResovler.isMultipart(request)) {
- MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
- Iterator<String> it = multipartRequest.getFileNames();
- while (it.hasNext()) {
- MultipartFile file = multipartRequest.getFile((String) it.next());// file
- // =
- // (CommonsMultipartFile)
- // multipartRequest.getFile((String)
- // it.next());
- if (file != null) {
- if (file.getSize() > 200 * 1024 * 1024L) {
- context.put("code", 4000);
- context.put("message", "涓婁紶鏂囦欢杩囧ぇ");
- return;
- }
- System.out.println(file.getOriginalFilename());
- if (file.getOriginalFilename() == null) {
- context.put("code", 4000);
- context.put("message", "鏂囦欢鍚嶄笉鍙负绌�");
- return;
- }
- /*
- * if(file.getOriginalFilename().contains(",")||file.getOriginalFilename().
- * contains(" ")){ sendFailureMessage(response,"鏂囦欢鍚嶇О鏈夎,涓嶅彲鍚湁閫楀彿绛夌壒娈婂瓧绗�"); }
- */
-
- String nowDate = DateUtil.getNowShortDate();
- folder += nowDate + "/";
- String strDirPath = rootPath + folder;
- File dirPath = new File(strDirPath);
- if (!dirPath.exists()) {
- dirPath.mkdirs();
- }
- String uploadFileName = file.getOriginalFilename();
- String x = UUID.randomUUID().toString().replace("-", "")
- + uploadFileName.substring(uploadFileName.lastIndexOf("."));
- String fileName = folder + x;
- String fileNames = nowDate + "/" + x;
- uploadFileName = uploadFileName.replace(" ", "");
- uploadFileName = uploadFileName.replace("锛�", ",");
- uploadFileName = uploadFileName.replaceAll(",", "-");
- System.err.println("R:" + fileName);
- String fileAndPath = dir + fileName;
- System.err.println("A:" + fileAndPath);
- // 鍒ゆ柇濡傛灉涓存椂鐩綍涓瓨鍦ㄧ浉鍚屽悕绉扮殑鏂囦欢鍏堝垹闄わ紝鍦ㄤ笂浼�
- File tempFile = new File(rootPath + fileName);
- if (tempFile.isFile() && tempFile.exists()) {
- tempFile.getAbsoluteFile().delete();
- }
- // 涓婁紶鍒版湇鍔″櫒涓存椂鏂囦欢澶�
- file.transferTo(tempFile);
- // 杞Щ鍒癋TP鏈嶅姟鍣�
- String nfix = "";
- if (null != uploadFileName) {
- nfix = uploadFileName.substring(uploadFileName.lastIndexOf("."));
- }
-
- if (StringUtils.equalsIgnoreCase(nfix, ".exe")) {
- context.put("code", 4000);
- context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".exe\"涓婁紶鏈夎锛�");
- return;
- }
- if (StringUtils.equalsIgnoreCase(nfix, ".dll")) {
- context.put("code", 4000);
- context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".dll\"涓婁紶鏈夎锛�");
- return;
- }
-
- String remoteName = fileName;
- String remoteFileName = fileAndPath;
-
- /* Map map = new HashMap();
- map.put("url", remoteFileName);
- map.put("alt", uploadFileName);
- map.put("href", remoteFileName);
- List maps = Arrays.asList(remoteFileName);*/
-
- if (true) {
- // 鍏抽棴FTP娴�
- // 绉诲姩鎴愬姛,杩斿洖鏂囦欢鍚�
-
- /*context.put("error", 0);
- context.put("url", remoteFileName);
- context.put("fullurl", remoteFileName);
- context.put("fname", uploadFileName);
- context.put("data", maps);
- context.put("halfurl", fileNames);*/
-
- context.put("success", true);
- context.put("code", 200);
- context.put("errno",0);
- JSONObject fileJSON = new JSONObject();
- fileJSON.put("url", remoteFileName);
- fileJSON.put("imgaddr", fileNames);
- fileJSON.put("imgname", uploadFileName);
- fileJSON.put("originname", uploadFileName);
- context.put("data",fileJSON);
- context.put("message","璇锋眰鎴愬姛");
-
- writerJson(response, context);
- return;
- } else {
- // 绉诲姩澶辫触
- context.put("code", 0);
- context.put("message", "涓婁紶澶辫触");
- writerJson(response, context);
- }
- }
- context.put("code", 0);
- context.put("message", "涓婁紶澶辫触");
- writerJson(response, context);
- return;
- }
- }
- context.put("code", 0);
- context.put("message", "涓婁紶澶辫触");
- writerJson(response, context);
- return;
- }
-}
diff --git a/server/system_service/src/main/java/com/doumee/api/system/NoticesController.java b/server/system_service/src/main/java/com/doumee/api/system/NoticesController.java
index 6f3811e..7fa757f 100644
--- a/server/system_service/src/main/java/com/doumee/api/system/NoticesController.java
+++ b/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
diff --git a/server/system_service/src/main/java/com/doumee/api/system/SystemController.java b/server/system_service/src/main/java/com/doumee/api/system/SystemController.java
index 8b7ba74..7572835 100644
--- a/server/system_service/src/main/java/com/doumee/api/system/SystemController.java
+++ b/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
diff --git a/server/system_service/src/main/java/com/doumee/api/system/SystemDataPermissionController.java b/server/system_service/src/main/java/com/doumee/api/system/SystemDataPermissionController.java
index fcb5b7c..97f4ce8 100644
--- a/server/system_service/src/main/java/com/doumee/api/system/SystemDataPermissionController.java
+++ b/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
diff --git a/server/system_service/src/main/java/com/doumee/api/system/SystemDictDataController.java b/server/system_service/src/main/java/com/doumee/api/system/SystemDictDataController.java
index 1b44045..92793f0 100644
--- a/server/system_service/src/main/java/com/doumee/api/system/SystemDictDataController.java
+++ b/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;
diff --git a/server/system_service/src/main/java/com/doumee/api/system/SystemMenuController.java b/server/system_service/src/main/java/com/doumee/api/system/SystemMenuController.java
index 5e4cf01..9b4514c 100644
--- a/server/system_service/src/main/java/com/doumee/api/system/SystemMenuController.java
+++ b/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
diff --git a/server/system_service/src/main/java/com/doumee/api/system/SystemPermissionController.java b/server/system_service/src/main/java/com/doumee/api/system/SystemPermissionController.java
index 327e24a..9720ebf 100644
--- a/server/system_service/src/main/java/com/doumee/api/system/SystemPermissionController.java
+++ b/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
diff --git a/server/system_service/src/main/java/com/doumee/api/system/SystemPositionController.java b/server/system_service/src/main/java/com/doumee/api/system/SystemPositionController.java
index 4670e06..c73ada3 100644
--- a/server/system_service/src/main/java/com/doumee/api/system/SystemPositionController.java
+++ b/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
diff --git a/server/system_service/src/main/java/com/doumee/api/system/SystemRoleController.java b/server/system_service/src/main/java/com/doumee/api/system/SystemRoleController.java
index a81ad34..7b0e613 100644
--- a/server/system_service/src/main/java/com/doumee/api/system/SystemRoleController.java
+++ b/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
diff --git a/server/system_service/src/main/java/com/doumee/api/system/SystemUserController.java b/server/system_service/src/main/java/com/doumee/api/system/SystemUserController.java
index a2cca7e..51550b6 100644
--- a/server/system_service/src/main/java/com/doumee/api/system/SystemUserController.java
+++ b/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
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/kuaidi100/ExpressUtils.java b/server/system_service/src/main/java/com/doumee/core/utils/kuaidi100/ExpressUtils.java
index 09285a0..05c440a 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/kuaidi100/ExpressUtils.java
+++ b/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;
diff --git a/server/system_service/src/main/java/com/doumee/dao/system/model/SystemDataPermission.java b/server/system_service/src/main/java/com/doumee/dao/system/model/SystemDataPermission.java
index 9f2e4b9..66505c7 100644
--- a/server/system_service/src/main/java/com/doumee/dao/system/model/SystemDataPermission.java
+++ b/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;
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/BaseController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/BaseController.java
index fd5ef6c..a390450 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/BaseController.java
+++ b/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;
}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/common/PublicController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/common/PublicController.java
index 7801a67..a446dbd 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/common/PublicController.java
+++ b/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;
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/system/SystemDictDataBizController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/system/SystemDictDataBizController.java
deleted file mode 100644
index 1f1b285..0000000
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/system/SystemDictDataBizController.java
+++ /dev/null
@@ -1,85 +0,0 @@
-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.model.ApiResponse;
-import com.doumee.core.constants.OperaType;
-import com.doumee.core.model.PageData;
-import com.doumee.core.model.PageWrap;
-import com.doumee.core.utils.Constants;
-import com.doumee.dao.admin.request.VisitConfigDTO;
-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 com.doumee.service.systembiz.SystemDictDataBizService;
-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/dictDataBiz")
-public class SystemDictDataBizController extends BaseController {
-
- @Autowired
- private SystemDictDataBizService systemDictDataService;
-
-
-
- /**
- * 璁垮鏉ヨ閰嶇疆
- * @return
- */
- @ApiOperation(value = "璁垮鏉ヨ閰嶇疆" )
- @GetMapping("/getVisitConfigDTO")
- public ApiResponse<VisitConfigDTO> getVisitConfigDTO(){
- return ApiResponse.success(systemDictDataService.getVisitConfigDTO());
- };
-
- /**
- * 淇敼璁垮鏉ヨ閰嶇疆
- * @param visitConfigDTO
- */
- @ApiOperation(value = "淇敼璁垮鏉ヨ閰嶇疆" )
- @PostMapping("/updateVisitConfig")
- public ApiResponse updateVisitConfig(@RequestBody VisitConfigDTO visitConfigDTO){
- systemDictDataService.updateVisitConfig(visitConfigDTO);
- return ApiResponse.success(null);
- };
-
-
- /**
- * 鍔冲姟鏉ヨ閰嶇疆
- * @return
- */
- @ApiOperation(value = "鍔冲姟鏉ヨ閰嶇疆" )
- @GetMapping("/getLaborConfigDTO")
- public ApiResponse<VisitConfigDTO> getLaborConfigDTO(){
- return ApiResponse.success(systemDictDataService.getLaborConfigDTO());
- };
-
- /**
- * 淇敼鍔冲姟鏉ヨ閰嶇疆
- * @param visitConfigDTO
- */
- @ApiOperation(value = "淇敼鍔冲姟鏉ヨ閰嶇疆" )
- @PostMapping("/updateLaborConfigDTO")
- public ApiResponse updateLaborConfigDTO(@RequestBody VisitConfigDTO visitConfigDTO){
- systemDictDataService.updateLaborConfigDTO(visitConfigDTO);
- return ApiResponse.success(null);
- };
-}
diff --git a/server/system_service/src/main/java/com/doumee/api/timer/QuartzController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/timer/QuartzController.java
similarity index 100%
rename from server/system_service/src/main/java/com/doumee/api/timer/QuartzController.java
rename to server/visits/dmvisit_admin/src/main/java/com/doumee/api/timer/QuartzController.java
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/config/swagger/SwaggerConfig.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
index 1a237ee..c8f9c2c 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
+++ b/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("銆愮郴缁熺鐞嗘帴鍙PI銆�")
@@ -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("銆愪笟鍔$鐞嗘帴鍙PI銆�")
+ .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("銆愬畾鏃朵换鍔℃帴鍙PI銆�")
- .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("銆愬叕鍏辨帴鍙PI銆�")
@@ -93,7 +81,7 @@
// .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
.paths(PathSelectors.any())
.build();
- }
+ }*/
/**
* 閲嶅啓basePackage鏂规硶锛屼娇鑳藉瀹炵幇澶氬寘璁块棶锛屽鍒惰创涓婂幓
* @author teavamc
diff --git a/server/visits/dmvisit_admin/src/main/resources/bootstrap.yml b/server/visits/dmvisit_admin/src/main/resources/bootstrap.yml
index de8f5dc..1a01249 100644
--- a/server/visits/dmvisit_admin/src/main/resources/bootstrap.yml
+++ b/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
\ No newline at end of file
diff --git a/server/system_service/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.java b/server/visits/dmvisit_service/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.java
similarity index 99%
copy 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
index f80d6a1..20ddfd6 100644
--- a/server/system_service/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.java
+++ b/server/visits/dmvisit_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;
diff --git a/server/visits/dmvisit_service/src/main/resources/application-dev.yml b/server/visits/dmvisit_service/src/main/resources/application-dev.yml
index 5532735..fcf49af 100644
--- a/server/visits/dmvisit_service/src/main/resources/application-dev.yml
+++ b/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
diff --git a/server/visits/dmvisit_service/src/main/resources/application-devYL.yml b/server/visits/dmvisit_service/src/main/resources/application-devYL.yml
index 9ed5843..edeed31 100644
--- a/server/visits/dmvisit_service/src/main/resources/application-devYL.yml
+++ b/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
########################鍚屾鏁版嵁妯″紡 ########################
diff --git a/server/visits/dmvisit_service/src/main/resources/application-pro.yml b/server/visits/dmvisit_service/src/main/resources/application-pro.yml
index 2e4cbd2..820aa2f 100644
--- a/server/visits/dmvisit_service/src/main/resources/application-pro.yml
+++ b/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
diff --git a/server/visits/dmvisit_service/src/main/resources/application-test.yml b/server/visits/dmvisit_service/src/main/resources/application-test.yml
index 988f053..03700b7 100644
--- a/server/visits/dmvisit_service/src/main/resources/application-test.yml
+++ b/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
diff --git a/server/visits/dmvisit_service/src/main/resources/application-testYL.yml b/server/visits/dmvisit_service/src/main/resources/application-testYL.yml
index 4324462..363db6d 100644
--- a/server/visits/dmvisit_service/src/main/resources/application-testYL.yml
+++ b/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
########################鍚屾鏁版嵁妯″紡 ########################
diff --git a/server/visits/dmvisit_web/src/main/java/com/doumee/config/swagger/SwaggerConfig.java b/server/visits/dmvisit_web/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
index 2b6e8f7..c8f9c2c 100644
--- a/server/visits/dmvisit_web/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
+++ b/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,40 +46,42 @@
.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("銆愮郴缁熺鐞嗘帴鍙PI銆�")
.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 getDocket1() {
+ public Docket getDocket2() {
return new Docket(DocumentationType.SWAGGER_2)
- .apiInfo(this.getApiInfo()).groupName("銆愬叕鍏辨帴鍙PI銆�")
+ .apiInfo(this.getApiInfo()).groupName("default")
.host(host)
.select()
- .apis( basePackage("com.doumee.api.common"))
+ .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("銆愬叕鍏辨帴鍙PI銆�")
+ .host(host)
+ .select()
+ .apis( basePackage("com.doumee.api.common"))
+ // 璁剧疆闇�瑕佽鎵弿鐨勭被锛岃繖閲岃缃负娣诲姞浜咢Api娉ㄨВ鐨勭被
+// .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
+ .paths(PathSelectors.any())
+ .build();
+ }*/
/**
* 閲嶅啓basePackage鏂规硶锛屼娇鑳藉瀹炵幇澶氬寘璁块棶锛屽鍒惰创涓婂幓
* @author teavamc
diff --git a/server/visits/pom.xml b/server/visits/pom.xml
index facdcbd..5c307b2 100644
--- a/server/visits/pom.xml
+++ b/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>
--
Gitblit v1.9.3