From d729d924aff31c769b90adc99d998d38cdf50ec0 Mon Sep 17 00:00:00 2001
From: liyanqi <15181887205@163.com>
Date: 星期五, 09 九月 2022 22:06:33 +0800
Subject: [PATCH] 修复一些问题
---
ycl-common/src/main/java/com/ycl/entity/auth/Operator.java | 36 ++
ycl-common/src/main/java/com/ycl/entity/auth/AuthInfo.java | 14
ycl-common/src/main/java/com/ycl/entity/depart/SccgDepart.java | 4
ycl-common/src/main/java/com/ycl/utils/auth/UserAuthUtil.java | 62 +++
ycl-platform/src/main/java/com/ycl/controller/user/UmsAdminController.java | 14
ycl-common/src/main/java/com/ycl/dto/user/AdminDepartInfoDTO.java | 30 +
ycl-common/src/main/java/com/ycl/service/depart/impl/SccgDepartServiceImpl.java | 56 +++
ycl-common/src/main/java/com/ycl/service/user/UmsAdminDepartService.java | 31 +
ycl-common/src/main/java/com/ycl/utils/JwtTokenUtil.java | 54 ++
pom.xml | 6
ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java | 20 +
ycl-common/src/main/java/com/ycl/utils/common/LiveTimeMillisecond.java | 75 ++++
ycl-common/src/main/java/com/ycl/api/BasePageDTO.java | 22 +
ycl-common/src/main/java/com/ycl/vo/user/UserVO.java | 4
ycl-common/src/main/java/com/ycl/api/BaseEntity.java | 2
ycl-common/src/main/java/com/ycl/enums/common/ResultCode.java | 11
ycl-common/src/main/java/com/ycl/bo/AdminUserDetails.java | 4
ycl-common/src/main/java/com/ycl/api/BasePageVO.java | 2
ycl-common/src/main/java/com/ycl/dto/user/AdminDepartDTO.java | 23 +
ycl-common/src/main/resources/mapper/user/UmsAdminDepartMapper.xml | 33 ++
ycl-common/src/main/java/com/ycl/mapper/user/UmsAdminDepartMapper.java | 24 +
ycl-common/src/main/java/com/ycl/service/depart/SccgDepartService.java | 2
/dev/null | 32 --
ycl-common/src/main/java/com/ycl/utils/auth/OperatorAuthUtil.java | 49 +++
ycl-common/src/main/java/com/ycl/utils/redis/RedisKey.java | 5
ycl-platform/src/main/java/com/ycl/controller/depart/DepartController.java | 34 ++
ycl-common/src/main/java/com/ycl/vo/depart/DepartVO.java | 44 ++
ycl-common/src/main/java/com/ycl/dto/UmsAdminParam.java | 12
ycl-common/src/main/java/com/ycl/config/GlobalCorsConfig.java | 35 ++
ycl-common/src/main/java/com/ycl/entity/user/UmsAdminDepart.java | 41 ++
ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminDepartServiceImpl.java | 95 +++++
ycl-platform/src/main/java/com/ycl/controller/BaseController.java | 35 ++
32 files changed, 849 insertions(+), 62 deletions(-)
diff --git a/pom.xml b/pom.xml
index c2b7558..747e79a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -155,6 +155,12 @@
<artifactId>easyexcel</artifactId>
<version>3.1.1</version>
</dependency>
+
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>fastjson</artifactId>
+ <version>1.2.73</version>
+ </dependency>
</dependencies>
</project>
diff --git a/ycl-common/src/main/java/com/ycl/api/BaseEntity.java b/ycl-common/src/main/java/com/ycl/api/BaseEntity.java
index 9a2eff6..1b27653 100644
--- a/ycl-common/src/main/java/com/ycl/api/BaseEntity.java
+++ b/ycl-common/src/main/java/com/ycl/api/BaseEntity.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
import java.util.Date;
@@ -11,6 +12,7 @@
* @version 1.0
* @date 2022/9/7
*/
+@Data
public class BaseEntity {
@ApiModelProperty("鍒涘缓鏃堕棿")
@TableField(fill = FieldFill.INSERT)
diff --git a/ycl-common/src/main/java/com/ycl/api/BasePageDTO.java b/ycl-common/src/main/java/com/ycl/api/BasePageDTO.java
new file mode 100644
index 0000000..0b67830
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/api/BasePageDTO.java
@@ -0,0 +1,22 @@
+package com.ycl.api;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Lyq
+ * @version 1.0
+ * @date 2022/9/9
+ */
+@ApiModel
+@Data
+public class BasePageDTO<T> {
+ @ApiModelProperty("鎬绘暟")
+ private long total;
+ @ApiModelProperty("鍒楄〃")
+ private List<T> records = new ArrayList<>();
+}
diff --git a/ycl-common/src/main/java/com/ycl/api/BasePageVO.java b/ycl-common/src/main/java/com/ycl/api/BasePageVO.java
index b73b3d8..2a15972 100644
--- a/ycl-common/src/main/java/com/ycl/api/BasePageVO.java
+++ b/ycl-common/src/main/java/com/ycl/api/BasePageVO.java
@@ -20,4 +20,6 @@
@Min(value = 1, message = "鏈�灏忔潯鏁�1")
@Max(value = 100, message = "鏈�澶ф潯鏁�100")
private int pageSize = 20;
+
+
}
diff --git a/ycl-common/src/main/java/com/ycl/bo/AdminUserDetails.java b/ycl-common/src/main/java/com/ycl/bo/AdminUserDetails.java
index a68c0d2..b1a6671 100644
--- a/ycl-common/src/main/java/com/ycl/bo/AdminUserDetails.java
+++ b/ycl-common/src/main/java/com/ycl/bo/AdminUserDetails.java
@@ -58,4 +58,8 @@
public boolean isEnabled() {
return umsAdmin.getStatus().equals(1);
}
+
+ public Long getUserId(){
+ return umsAdmin.getId();
+ }
}
diff --git a/ycl-common/src/main/java/com/ycl/config/GlobalCorsConfig.java b/ycl-common/src/main/java/com/ycl/config/GlobalCorsConfig.java
new file mode 100644
index 0000000..5fea058
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/config/GlobalCorsConfig.java
@@ -0,0 +1,35 @@
+package com.ycl.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 鍏ㄥ眬璺ㄥ煙閰嶇疆
+ */
+@Configuration
+public class GlobalCorsConfig {
+
+ /**
+ * 鍏佽璺ㄥ煙璋冪敤鐨勮繃婊ゅ櫒
+ */
+ @Bean
+ public CorsFilter corsFilter() {
+ CorsConfiguration config = new CorsConfiguration();
+ //鍏佽鎵�鏈夊煙鍚嶈繘琛岃法鍩熻皟鐢�
+ config.addAllowedOriginPattern("*");
+ //璇ョ敤娉曞湪SpringBoot 2.7.0涓凡涓嶅啀鏀寔
+ //config.addAllowedOrigin("*");
+ //鍏佽璺ㄨ秺鍙戦�乧ookie
+ config.setAllowCredentials(true);
+ //鏀捐鍏ㄩ儴鍘熷澶翠俊鎭�
+ config.addAllowedHeader("*");
+ //鍏佽鎵�鏈夎姹傛柟娉曡法鍩熻皟鐢�
+ config.addAllowedMethod("*");
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**", config);
+ return new CorsFilter(source);
+ }
+}
diff --git a/ycl-common/src/main/java/com/ycl/config/WebConfiguration.java b/ycl-common/src/main/java/com/ycl/config/WebConfiguration.java
deleted file mode 100644
index bf0b4ed..0000000
--- a/ycl-common/src/main/java/com/ycl/config/WebConfiguration.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package com.ycl.config;
-
-import com.ycl.utils.JwtTokenUtil;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.Ordered;
-import org.springframework.core.annotation.Order;
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.security.crypto.password.PasswordEncoder;
-import org.springframework.web.cors.CorsConfiguration;
-import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-import org.springframework.web.filter.CorsFilter;
-
-
-@Configuration
-@Order(Ordered.HIGHEST_PRECEDENCE)
-public class WebConfiguration {
-// @Autowired
-// private ProxyInterceptor proxyInterceptor;
-
-// @Bean
-// public WebMvcConfigurer webMvcConfigurer() {
-// return new WebMvcConfigurer() {
-// /**
-// * 娣诲姞鎷︽埅鍣�
-// * @param registry
-// */
-// @Override
-// public void addInterceptors(InterceptorRegistry registry) {
-// registry.addInterceptor(proxyInterceptor)
-// .addPathPatterns("/**");
-// }
-// @Override
-// public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
-// configurer.favorPathExtension(false);
-// }
-// };
-
-// }
-
- @Bean
- public PasswordEncoder passwordEncoder() {
- return new BCryptPasswordEncoder();
- }
-
- @Bean
- public IgnoreUrlsConfig ignoreUrlsConfig() {
- return new IgnoreUrlsConfig();
- }
-
- @Bean
- public JwtTokenUtil jwtTokenUtil() {
- return new JwtTokenUtil();
- }
-
- @Bean
- public CorsFilter corsFilter() {
- final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
- final CorsConfiguration config = new CorsConfiguration();
- // 鍏佽cookies璺ㄥ煙
- config.setAllowCredentials(true);
- // #鍏佽鍚戣鏈嶅姟鍣ㄦ彁浜よ姹傜殑URI锛�*琛ㄧず鍏ㄩ儴鍏佽锛屽湪SpringMVC涓紝濡傛灉璁炬垚*锛屼細鑷姩杞垚褰撳墠璇锋眰澶翠腑鐨凮rigin,璇ョ敤娉曞湪SpringBoot 2.7.0涓凡涓嶅啀鏀寔
- //config.addAllowedOrigin("*");
- // #鍏佽璁块棶鐨勫ご淇℃伅,*琛ㄧず鍏ㄩ儴
- config.addAllowedHeader("*");
- // 棰勬璇锋眰鐨勭紦瀛樻椂闂达紙绉掞級锛屽嵆鍦ㄨ繖涓椂闂存閲岋紝瀵逛簬鐩稿悓鐨勮法鍩熻姹備笉浼氬啀棰勬浜�
- config.setMaxAge(18000L);
- // 鍏佽鎻愪氦璇锋眰鐨勬柟娉曪紝*琛ㄧず鍏ㄩ儴鍏佽
- config.addAllowedMethod("OPTIONS");
- config.addAllowedMethod("HEAD");
- // 鍏佽Get鐨勮姹傛柟娉�
- config.addAllowedMethod("GET");
- config.addAllowedMethod("PUT");
- config.addAllowedMethod("POST");
- config.addAllowedMethod("DELETE");
- config.addAllowedMethod("PATCH");
- source.registerCorsConfiguration("/**", config);
- return new CorsFilter(source);
- }
-
-}
diff --git a/ycl-common/src/main/java/com/ycl/config/WebSecurityCorsFilter.java b/ycl-common/src/main/java/com/ycl/config/WebSecurityCorsFilter.java
deleted file mode 100644
index e80a860..0000000
--- a/ycl-common/src/main/java/com/ycl/config/WebSecurityCorsFilter.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.ycl.config;
-
-import javax.servlet.*;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
-/**
- * @author lyq
- * @version 1.0
- * @date 2022/09/06 16:52
- */
-public class WebSecurityCorsFilter implements Filter {
- @Override
- public void init(FilterConfig filterConfig) throws ServletException {
-
- }
-
- @Override
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
- HttpServletResponse res = (HttpServletResponse) response;
- res.setHeader("Access-Control-Allow-Origin", "*");
- res.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT");
- res.setHeader("Access-Control-Max-Age", "3600");
- res.setHeader("Access-Control-Allow-Headers", "Authorization, Content-Type, Accept, x-requested-with, Cache-Control, os, version, source");
- chain.doFilter(request, res);
- }
-
- @Override
- public void destroy() {
-
- }
-}
diff --git a/ycl-common/src/main/java/com/ycl/dto/UmsAdminParam.java b/ycl-common/src/main/java/com/ycl/dto/UmsAdminParam.java
index 718b238..c1931de 100644
--- a/ycl-common/src/main/java/com/ycl/dto/UmsAdminParam.java
+++ b/ycl-common/src/main/java/com/ycl/dto/UmsAdminParam.java
@@ -4,10 +4,7 @@
import lombok.Getter;
import lombok.Setter;
-import javax.validation.constraints.Email;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
+import javax.validation.constraints.*;
/**
* 鐢ㄦ埛鐧诲綍鍙傛暟
@@ -20,6 +17,7 @@
private String username;
@ApiModelProperty(value = "鎵嬫満鍙风爜")
+ @Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$", message = "鎵嬫満鍙锋牸寮忔湁璇�")
private String mobile;
@NotEmpty
@@ -38,13 +36,13 @@
private String note;
@ApiModelProperty(value = "鏄惁鍏氬憳,0:鍚︼紝1锛氭槸",example = "0")
+ @NotNull(message = "鍏氬憳鏈�夋嫨")
private byte isDy;
@ApiModelProperty(value = "鑱屽姟")
private String jobTitle;
@ApiModelProperty(value = "閮ㄩ棬id")
- @NotNull(message = "閮ㄩ棬涓嶈兘涓虹┖")
private Long departmentId;
@ApiModelProperty(value = "鐢ㄦ埛绫诲瀷")
@@ -52,4 +50,8 @@
@ApiModelProperty(value = "搴ф満/鍒嗘満")
private String zj;
+
+// @ApiModelProperty(value = "鏄惁鏄礋璐d汉锛�0->false,1->true锛岄粯璁�0",example = "0")
+// @NotNull(message = "璐熻矗浜烘湭閫夋嫨")
+// private byte isManager;
}
diff --git a/ycl-common/src/main/java/com/ycl/dto/user/AdminDepartDTO.java b/ycl-common/src/main/java/com/ycl/dto/user/AdminDepartDTO.java
new file mode 100644
index 0000000..5a89ec6
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/dto/user/AdminDepartDTO.java
@@ -0,0 +1,23 @@
+package com.ycl.dto.user;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author Lyq
+ * @version 1.0
+ * @date 2022/9/9
+ */
+public class AdminDepartDTO {
+ @Data
+ @ApiModel
+ public static class UserInfoDTO {
+ @ApiModelProperty(value = "鐢ㄦ埛Id")
+ private Long userId;
+ @ApiModelProperty(value = "鐢ㄦ埛鍚�")
+ private String username;
+ }
+
+
+}
diff --git a/ycl-common/src/main/java/com/ycl/dto/user/AdminDepartInfoDTO.java b/ycl-common/src/main/java/com/ycl/dto/user/AdminDepartInfoDTO.java
new file mode 100644
index 0000000..65b99b7
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/dto/user/AdminDepartInfoDTO.java
@@ -0,0 +1,30 @@
+package com.ycl.dto.user;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author Lyq
+ * @version 1.0
+ * @date 2022/9/9
+ */
+@Data
+public class AdminDepartInfoDTO {
+ @ApiModelProperty("閮ㄩ棬Id")
+ private Long departId;
+
+ @ApiModelProperty("閮ㄩ棬鍚嶇О")
+ private String departName;
+
+ @ApiModelProperty("閮ㄩ棬鎻忚堪")
+ private String departDes;
+
+ @ApiModelProperty("閮ㄩ棬绫诲瀷")
+ private byte departType;
+
+ @ApiModelProperty("鐢ㄦ埛Id")
+ private Long userId;
+
+ @ApiModelProperty("鐢ㄦ埛鍚�")
+ private String userName;
+}
diff --git a/ycl-common/src/main/java/com/ycl/entity/auth/AuthInfo.java b/ycl-common/src/main/java/com/ycl/entity/auth/AuthInfo.java
new file mode 100644
index 0000000..882e388
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/entity/auth/AuthInfo.java
@@ -0,0 +1,14 @@
+package com.ycl.entity.auth;
+
+import lombok.Data;
+
+/**
+ * @author Lyq
+ * @version 1.0
+ * @date 2022/9/9
+ */
+@Data
+public class AuthInfo {
+ private Long userId;
+ private String username;
+}
diff --git a/ycl-common/src/main/java/com/ycl/entity/auth/Operator.java b/ycl-common/src/main/java/com/ycl/entity/auth/Operator.java
new file mode 100644
index 0000000..e843788
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/entity/auth/Operator.java
@@ -0,0 +1,36 @@
+package com.ycl.entity.auth;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @author Lyq
+ * @version 1.0
+ * @date 2022/9/9
+ * 鎿嶄綔鑰�
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class Operator implements Serializable {
+ private static final long serialVersionUID = -6412584952129785095L;
+
+
+ /**
+ * 鎿嶄綔鑰匢d
+ */
+ @JSONField(serialize = false)
+ private long operatorId;
+
+ /**
+ * 鎿嶄綔鑰匩ame
+ */
+ @JSONField(serialize = false)
+ private String operatorName;
+
+
+}
diff --git a/ycl-common/src/main/java/com/ycl/entity/depart/SccgDepart.java b/ycl-common/src/main/java/com/ycl/entity/depart/SccgDepart.java
index 635d4ac..2a850a2 100644
--- a/ycl-common/src/main/java/com/ycl/entity/depart/SccgDepart.java
+++ b/ycl-common/src/main/java/com/ycl/entity/depart/SccgDepart.java
@@ -2,6 +2,8 @@
import com.baomidou.mybatisplus.annotation.*;
import com.ycl.api.BaseEntity;
+import com.ycl.dto.user.AdminDepartDTO;
+import com.ycl.entity.user.UmsAdminDepart;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
@@ -57,5 +59,7 @@
@TableField(exist = false)
private List<SccgDepart> children;
+ @TableField(exist = false)
+ private List<AdminDepartDTO.UserInfoDTO> userInfoDTOS;
}
diff --git a/ycl-common/src/main/java/com/ycl/entity/user/UmsAdminDepart.java b/ycl-common/src/main/java/com/ycl/entity/user/UmsAdminDepart.java
new file mode 100644
index 0000000..77b8b22
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/entity/user/UmsAdminDepart.java
@@ -0,0 +1,41 @@
+package com.ycl.entity.user;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ycl.api.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.catalina.LifecycleState;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author lyq
+ * @since 2022-09-09
+ */
+@Getter
+@Setter
+@TableName("ums_admin_depart")
+@ApiModel(value = "UmsAdminDepart瀵硅薄", description = "")
+public class UmsAdminDepart extends BaseEntity implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("涓婚敭")
+ private Long id;
+
+ @ApiModelProperty("鐢ㄦ埛id")
+ private Long userId;
+
+ @ApiModelProperty("閮ㄩ棬id")
+ private Long departId;
+
+ @ApiModelProperty("鏄惁鏄鐞嗗憳锛�0->false,1->true锛岄粯璁�0")
+ private Boolean isManager;
+}
diff --git a/ycl-common/src/main/java/com/ycl/enums/common/ResultCode.java b/ycl-common/src/main/java/com/ycl/enums/common/ResultCode.java
index 9ff7bd4..f58d0ed 100644
--- a/ycl-common/src/main/java/com/ycl/enums/common/ResultCode.java
+++ b/ycl-common/src/main/java/com/ycl/enums/common/ResultCode.java
@@ -15,13 +15,22 @@
UNAUTHORIZED(401, "鏆傛湭鐧诲綍鎴杢oken宸茬粡杩囨湡"),
FORBIDDEN(403, "娌℃湁鐩稿叧鏉冮檺"),
+ NULL_PARAMETER(-3, "绌哄弬"),
+
RECORD_ALREADY_EXISTS(2001, "璁板綍宸插瓨鍦�"),
RECORD_SAVE_FAIL(2002, "璁板綍淇濆瓨澶辫触"),
RECORD_UPDATE_FAIL(2003, "璁板綍鏇存柊澶辫触"),
RECORD_DELETE_FAIL(2004, "璁板綍鍒犻櫎澶辫触"),
RECORD_NOT_EXISTS(2005, "璁板綍涓嶅瓨鍦�"),
FILE_NOT_FOUND(2006, "鏂囦欢涓嶅瓨鍦�"),
- FILE_TYPE_FAIL(2007, "鏂囦欢鏍煎紡閿欒");
+ FILE_TYPE_FAIL(2007, "鏂囦欢鏍煎紡閿欒"),
+
+ NOT_LOGGED(2015, "鏈櫥褰�,璇风櫥褰曞悗鎿嶄綔"),
+
+ LOGIN_TIMEOUT(2016, "鐧诲綍瓒呮椂,璇烽噸鏂扮櫥褰�"),
+
+ OPERATOR_TYPE_FETCH_FAIL(3001, "鑾峰彇鎿嶄綔鍛樺け璐�");
+
private long code;
private String message;
diff --git a/ycl-common/src/main/java/com/ycl/mapper/user/UmsAdminDepartMapper.java b/ycl-common/src/main/java/com/ycl/mapper/user/UmsAdminDepartMapper.java
new file mode 100644
index 0000000..cd73ce4
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/mapper/user/UmsAdminDepartMapper.java
@@ -0,0 +1,24 @@
+package com.ycl.mapper.user;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ycl.entity.user.UmsAdminDepart;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.security.core.parameters.P;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author lyq
+ * @since 2022-09-09
+ */
+public interface UmsAdminDepartMapper extends BaseMapper<UmsAdminDepart> {
+
+ void deletedByDepartId(@Param("departId") long departId);
+
+ List<UmsAdminDepart> selectPageByUserId(@Param("userId") long userId, @Param("current") int current, @Param("pageSize") int pageSize);
+}
diff --git a/ycl-common/src/main/java/com/ycl/service/depart/SccgDepartService.java b/ycl-common/src/main/java/com/ycl/service/depart/SccgDepartService.java
index a24b41b..0d2d5df 100644
--- a/ycl-common/src/main/java/com/ycl/service/depart/SccgDepartService.java
+++ b/ycl-common/src/main/java/com/ycl/service/depart/SccgDepartService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.ycl.api.BasePageDTO;
import com.ycl.entity.depart.SccgDepart;
import com.ycl.vo.depart.DepartVO;
import org.apache.catalina.LifecycleState;
@@ -63,4 +64,5 @@
* @param params
*/
void updateStatus(DepartVO.StatusDepartVO params);
+
}
diff --git a/ycl-common/src/main/java/com/ycl/service/depart/impl/SccgDepartServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/depart/impl/SccgDepartServiceImpl.java
index 7243c24..8b4e019 100644
--- a/ycl-common/src/main/java/com/ycl/service/depart/impl/SccgDepartServiceImpl.java
+++ b/ycl-common/src/main/java/com/ycl/service/depart/impl/SccgDepartServiceImpl.java
@@ -1,15 +1,25 @@
package com.ycl.service.depart.impl;
+import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ycl.api.BasePageDTO;
import com.ycl.api.CommonResult;
+import com.ycl.dto.user.AdminDepartDTO;
import com.ycl.entity.depart.SccgDepart;
+import com.ycl.entity.user.UmsAdminDepart;
import com.ycl.enums.common.ResultCode;
import com.ycl.exception.ApiException;
import com.ycl.mapper.depart.SccgDepartMapper;
+import com.ycl.mapper.user.UmsAdminDepartMapper;
import com.ycl.service.depart.SccgDepartService;
+import com.ycl.service.user.UmsAdminDepartService;
+import com.ycl.service.user.UmsAdminService;
+import com.ycl.utils.common.PojoUtils;
import com.ycl.vo.depart.DepartVO;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -31,6 +41,10 @@
public class SccgDepartServiceImpl extends ServiceImpl<SccgDepartMapper, SccgDepart> implements SccgDepartService {
@Resource
private SccgDepartMapper sccgDepartMapper;
+ @Resource
+ private UmsAdminDepartService umsAdminDepartService;
+ @Resource
+ private UmsAdminService umsAdminService;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -63,16 +77,28 @@
throw new ApiException(ResultCode.RECORD_ALREADY_EXISTS);
}
BeanUtils.copyProperties(updateDepartVO, sccgDepart);
+ List<Long> userIds = updateDepartVO.getUserIds();
+ if (CollUtil.isNotEmpty(userIds)) {
+ Long departId = updateDepartVO.getId();
+ userIds.forEach(e -> {
+ UmsAdminDepart adminDepart = new UmsAdminDepart();
+ adminDepart.setDepartId(departId);
+ adminDepart.setUserId(e);
+ umsAdminDepartService.save(adminDepart);
+ });
+ }
if (sccgDepartMapper.updateById(sccgDepart) <= 0) {
throw new ApiException(ResultCode.RECORD_UPDATE_FAIL);
}
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public void delete(long id) {
if (sccgDepartMapper.deleteById(id) <= 0) {
throw new ApiException(ResultCode.RECORD_DELETE_FAIL);
}
+ umsAdminDepartService.deletedByDepartId(id);
}
@Override
@@ -96,7 +122,33 @@
@Override
public IPage<SccgDepart> pageDepart(DepartVO.PageDepartVO params) {
- return null;
+ Page<SccgDepart> page = new Page<>(params.getCurrent(), params.getPageSize());
+ LambdaQueryWrapper<SccgDepart> query = new LambdaQueryWrapper<>();
+ if (StringUtils.isNotBlank(params.getDepartName())) {
+ query.like(SccgDepart::getDepartName, params.getDepartName());
+ }
+ if (PojoUtils.Vo.isUsefulSearchParam(params.getDepartType())) {
+ query.like(SccgDepart::getDepartType, params.getDepartType());
+ }
+ query.orderByDesc(SccgDepart::getCreateTime);
+ Page<SccgDepart> departPage = sccgDepartMapper.selectPage(page, query);
+ List<SccgDepart> records = departPage.getRecords();
+ //璐熻矗浜�
+ if (CollUtil.isNotEmpty(records)) {
+ for (SccgDepart record : records) {
+ List<UmsAdminDepart> umsAdminDeparts = umsAdminDepartService.queryByDepartId(record.getId());
+ if (CollUtil.isNotEmpty(umsAdminDeparts)) {
+ List<AdminDepartDTO.UserInfoDTO> userInfoDTOS = umsAdminDeparts.stream().map(a -> {
+ AdminDepartDTO.UserInfoDTO userInfoDTO = new AdminDepartDTO.UserInfoDTO();
+ userInfoDTO.setUserId(a.getUserId());
+ userInfoDTO.setUsername(umsAdminService.getById(a.getUserId()).getUsername());
+ return userInfoDTO;
+ }).collect(Collectors.toList());
+ record.setUserInfoDTOS(userInfoDTOS);
+ }
+ }
+ }
+ return departPage;
}
@Override
@@ -107,6 +159,7 @@
throw new ApiException(ResultCode.RECORD_UPDATE_FAIL);
}
}
+
/**
* 鍒╃敤閫掑綊灏嗘渶鍚庝竴绾х┖闆嗗悎鍙樹负null锛屽墠绔仈绾ч�夋嫨鍣ㄦ渶鍚庢墠涓嶄細鍑虹幇 鏆傛棤鏁版嵁鐨刡ug
@@ -156,4 +209,5 @@
SccgDepart sccgDepart = this.sccgDepartMapper.selectOne(queryWrapper);
return sccgDepart;
}
+
}
diff --git a/ycl-common/src/main/java/com/ycl/service/user/UmsAdminDepartService.java b/ycl-common/src/main/java/com/ycl/service/user/UmsAdminDepartService.java
new file mode 100644
index 0000000..6d5cbd5
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/service/user/UmsAdminDepartService.java
@@ -0,0 +1,31 @@
+package com.ycl.service.user;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ycl.api.BasePageDTO;
+import com.ycl.api.CommonPage;
+import com.ycl.dto.user.AdminDepartInfoDTO;
+import com.ycl.entity.user.UmsAdminDepart;
+import com.ycl.vo.depart.DepartVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 鏈嶅姟绫�
+ * </p>
+ *
+ * @author lyq
+ * @since 2022-09-09
+ */
+public interface UmsAdminDepartService extends IService<UmsAdminDepart> {
+
+ List<UmsAdminDepart> queryByDepartId(Long departId);
+
+ List<UmsAdminDepart> queryByUserId(long userId);
+
+ void deletedByDepartId(long departId);
+
+ BasePageDTO belongDepart(long userId, int current, int pageSize);
+}
diff --git a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminDepartServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminDepartServiceImpl.java
new file mode 100644
index 0000000..73f8092
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminDepartServiceImpl.java
@@ -0,0 +1,95 @@
+package com.ycl.service.user.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ycl.api.BasePageDTO;
+import com.ycl.api.CommonPage;
+import com.ycl.dto.user.AdminDepartInfoDTO;
+import com.ycl.entity.depart.SccgDepart;
+import com.ycl.entity.user.UmsAdmin;
+import com.ycl.entity.user.UmsAdminDepart;
+import com.ycl.mapper.user.UmsAdminDepartMapper;
+import com.ycl.service.depart.SccgDepartService;
+import com.ycl.service.user.UmsAdminDepartService;
+import com.ycl.service.user.UmsAdminService;
+import com.ycl.vo.depart.DepartVO;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author lyq
+ * @since 2022-09-09
+ */
+@Service
+public class UmsAdminDepartServiceImpl extends ServiceImpl<UmsAdminDepartMapper, UmsAdminDepart> implements UmsAdminDepartService {
+
+ @Resource
+ private UmsAdminDepartMapper umsAdminDepartMapper;
+ @Resource
+ private SccgDepartService sccgDepartService;
+ @Resource
+ private UmsAdminService umsAdminService;
+
+ @Override
+ public List<UmsAdminDepart> queryByDepartId(Long departId) {
+ List<UmsAdminDepart> umsAdminDeparts = umsAdminDepartMapper.selectList(new LambdaQueryWrapper<UmsAdminDepart>()
+ .eq(UmsAdminDepart::getDepartId, departId)
+ .eq(UmsAdminDepart::getIsManager, 1));
+ if (CollUtil.isNotEmpty(umsAdminDeparts)) {
+ return umsAdminDeparts;
+ }
+ return null;
+ }
+
+ @Override
+ public List<UmsAdminDepart> queryByUserId(long userId) {
+ List<UmsAdminDepart> umsAdminDeparts = umsAdminDepartMapper.selectList(new LambdaQueryWrapper<UmsAdminDepart>().eq(UmsAdminDepart::getUserId, userId));
+ if (CollUtil.isNotEmpty(umsAdminDeparts)) {
+ return umsAdminDeparts;
+ }
+ return null;
+ }
+
+ @Override
+ public void deletedByDepartId(long departId) {
+ umsAdminDepartMapper.deletedByDepartId(departId);
+ }
+
+ @Override
+ public BasePageDTO belongDepart(long userId, int current, int pageSize) {
+ BasePageDTO basePageDTO = new BasePageDTO();
+ Long count = umsAdminDepartMapper.selectCount(new LambdaQueryWrapper<UmsAdminDepart>().eq(UmsAdminDepart::getUserId, userId));
+ basePageDTO.setTotal(count);
+ if (count > 0) {
+ current = (current - 1) * pageSize;
+ List<UmsAdminDepart> departList = umsAdminDepartMapper.selectPageByUserId(userId, current, pageSize);
+ List<DepartVO.AdminDepartInfoVO> adminDepartInfoVOS = new ArrayList<>();
+ DepartVO.AdminDepartInfoVO adminDepartInfoVO = null;
+ for (UmsAdminDepart umsAdminDepart : departList) {
+ adminDepartInfoVO = new DepartVO.AdminDepartInfoVO();
+ SccgDepart sccgDepart = sccgDepartService.loadDepartById(umsAdminDepart.getDepartId());
+ UmsAdmin umsAdmin = umsAdminService.getById(userId);
+ adminDepartInfoVO.setDepartId(umsAdminDepart.getDepartId());
+ adminDepartInfoVO.setDepartName(sccgDepart.getDepartName());
+ adminDepartInfoVO.setDepartDes(sccgDepart.getDepartDes());
+ adminDepartInfoVO.setDepartType(sccgDepart.getDepartType());
+ adminDepartInfoVO.setUserId(userId);
+ adminDepartInfoVO.setUserName(umsAdmin.getUsername());
+ adminDepartInfoVOS.add(adminDepartInfoVO);
+ }
+ basePageDTO.setRecords(adminDepartInfoVOS);
+ }
+ return basePageDTO;
+ }
+
+}
diff --git a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java
index 366c696..880646f 100644
--- a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java
+++ b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java
@@ -18,14 +18,18 @@
import com.ycl.mapper.user.UmsResourceMapper;
import com.ycl.mapper.user.UmsRoleMapper;
import com.ycl.service.depart.SccgDepartService;
+import com.ycl.service.redis.RedisService;
import com.ycl.service.user.UmsAdminCacheService;
+import com.ycl.service.user.UmsAdminDepartService;
import com.ycl.service.user.UmsAdminRoleRelationService;
import com.ycl.service.user.UmsAdminService;
import com.ycl.utils.JwtTokenUtil;
import com.ycl.utils.SpringUtil;
+import com.ycl.utils.common.LiveTimeMillisecond;
import com.ycl.utils.common.MacUtils;
import com.ycl.utils.common.PojoUtils;
import com.ycl.utils.common.RandomUtils;
+import com.ycl.utils.redis.RedisKey;
import com.ycl.vo.user.UserVO;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
@@ -71,6 +75,10 @@
private UmsResourceMapper umsResourceMapper;
@Resource
private SccgDepartService sccgDepartService;
+ @Resource
+ private UmsAdminDepartService umsAdminDepartService;
+ @Resource
+ private RedisService redisService;
@Override
public UmsAdmin getAdminByUsername(String username) {
@@ -107,8 +115,10 @@
String encodePassword = passwordEncoder.encode(umsAdmin.getPassword());
umsAdmin.setPassword(encodePassword);
baseMapper.insert(umsAdmin);
+ //瀵圭敤鎴峰悕绯荤粺榛樿娣诲姞
umsAdmin.setNickName(RandomUtils.getUserId(umsAdmin.getId()));
baseMapper.updateById(umsAdmin);
+
return umsAdmin;
}
@@ -117,7 +127,7 @@
String token = null;
//瀵嗙爜闇�瑕佸鎴风鍔犲瘑鍚庝紶閫�
try {
- UserDetails userDetails = loadUserByUsername(username);
+ AdminUserDetails userDetails = (AdminUserDetails) loadUserByUsername(username);
if (!passwordEncoder.matches(password, userDetails.getPassword())) {
Asserts.fail("瀵嗙爜涓嶆纭�");
}
@@ -126,7 +136,9 @@
}
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication);
- token = jwtTokenUtil.generateToken(userDetails);
+ //鏍规嵁鐢ㄦ埛id锛岀敤鎴峰鍚�
+ token = jwtTokenUtil.generateToken(userDetails.getUserId(), userDetails.getUsername());
+ redisService.set(RedisKey.PLATFORM_TOKEN_KEY.concat(username), token, LiveTimeMillisecond.s7200.time);
// updateLoginTimeByUsername(username);
insertLoginLog(username);
} catch (AuthenticationException e) {
@@ -181,6 +193,7 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public boolean update(Long id, UmsAdmin admin) {
admin.setId(id);
UmsAdmin rawAdmin = getById(id);
@@ -299,6 +312,9 @@
if (PojoUtils.Vo.isUsefulSearchParam(pageUserVO.getUserType())) {
queryWrapper.eq(UmsAdmin::getUserType, pageUserVO.getUserType());
}
+ if (StringUtils.isNotBlank(pageUserVO.getMobile())) {
+ queryWrapper.like(UmsAdmin::getMobile, pageUserVO.getMobile());
+ }
if (PojoUtils.Vo.isUsefulSearchParam(pageUserVO.getDepartmentId())) {
queryWrapper.eq(UmsAdmin::getDepartmentId, pageUserVO.getDepartmentId());
}
diff --git a/ycl-common/src/main/java/com/ycl/utils/JwtTokenUtil.java b/ycl-common/src/main/java/com/ycl/utils/JwtTokenUtil.java
index 45f2028..1ebaabf 100644
--- a/ycl-common/src/main/java/com/ycl/utils/JwtTokenUtil.java
+++ b/ycl-common/src/main/java/com/ycl/utils/JwtTokenUtil.java
@@ -2,6 +2,11 @@
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.ycl.entity.auth.AuthInfo;
+import com.ycl.enums.common.ResultCode;
+import com.ycl.exception.ApiException;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
@@ -27,7 +32,7 @@
*/
public class JwtTokenUtil {
private static final Logger LOGGER = LoggerFactory.getLogger(JwtTokenUtil.class);
- private static final String CLAIM_KEY_USERNAME = "sub";
+ private static final String CLAIM_KEY_INFO = "sub";
private static final String CLAIM_KEY_CREATED = "created";
@Value("${jwt.secret}")
private String secret;
@@ -116,7 +121,7 @@
*/
public String generateToken(UserDetails userDetails) {
Map<String, Object> claims = new HashMap<>();
- claims.put(CLAIM_KEY_USERNAME, userDetails.getUsername());
+ claims.put(CLAIM_KEY_INFO, userDetails.getUsername());
claims.put(CLAIM_KEY_CREATED, new Date());
return generateToken(claims);
}
@@ -127,26 +132,26 @@
* @param oldToken 甯okenHead鐨則oken
*/
public String refreshHeadToken(String oldToken) {
- if(StrUtil.isEmpty(oldToken)){
+ if (StrUtil.isEmpty(oldToken)) {
return null;
}
String token = oldToken.substring(tokenHead.length());
- if(StrUtil.isEmpty(token)){
+ if (StrUtil.isEmpty(token)) {
return null;
}
//token鏍¢獙涓嶉�氳繃
Claims claims = getClaimsFromToken(token);
- if(claims==null){
+ if (claims == null) {
return null;
}
//濡傛灉token宸茬粡杩囨湡锛屼笉鏀寔鍒锋柊
- if(isTokenExpired(token)){
+ if (isTokenExpired(token)) {
return null;
}
//濡傛灉token鍦�30鍒嗛挓涔嬪唴鍒氬埛鏂拌繃锛岃繑鍥炲師token
- if(tokenRefreshJustBefore(token,30*60)){
+ if (tokenRefreshJustBefore(token, 30 * 60)) {
return token;
- }else{
+ } else {
claims.put(CLAIM_KEY_CREATED, new Date());
return generateToken(claims);
}
@@ -154,17 +159,46 @@
/**
* 鍒ゆ柇token鍦ㄦ寚瀹氭椂闂村唴鏄惁鍒氬垰鍒锋柊杩�
+ *
* @param token 鍘焧oken
- * @param time 鎸囧畾鏃堕棿锛堢锛�
+ * @param time 鎸囧畾鏃堕棿锛堢锛�
*/
private boolean tokenRefreshJustBefore(String token, int time) {
Claims claims = getClaimsFromToken(token);
Date created = claims.get(CLAIM_KEY_CREATED, Date.class);
Date refreshDate = new Date();
//鍒锋柊鏃堕棿鍦ㄥ垱寤烘椂闂寸殑鎸囧畾鏃堕棿鍐�
- if(refreshDate.after(created)&&refreshDate.before(DateUtil.offsetSecond(created,time))){
+ if (refreshDate.after(created) && refreshDate.before(DateUtil.offsetSecond(created, time))) {
return true;
}
return false;
}
+
+ public AuthInfo parseToken(String token) {
+ AuthInfo authInfo = null;
+ try {
+ if (isTokenExpired(token)) {
+ throw new ApiException(ResultCode.NOT_LOGGED);
+ }
+ Claims claims = getClaimsFromToken(token);
+ String subject = claims.getSubject();
+ authInfo = JSON.parseObject(subject, AuthInfo.class);
+ } catch (Exception e) {
+ throw new ApiException(e.getMessage());
+ }
+ return authInfo;
+ }
+
+ /**
+ * 鏍规嵁鐢ㄦ埛id,鐢ㄦ埛鍚嶇敓鎴恡oken
+ */
+ public String generateToken(long userId, String username) {
+ Map<String, Object> claims = new HashMap<>();
+ AuthInfo authInfo = new AuthInfo();
+ authInfo.setUserId(userId);
+ authInfo.setUsername(username);
+ claims.put(CLAIM_KEY_INFO, JSONObject.toJSONString(authInfo));
+ claims.put(CLAIM_KEY_CREATED, new Date());
+ return generateToken(claims);
+ }
}
diff --git a/ycl-common/src/main/java/com/ycl/utils/auth/OperatorAuthUtil.java b/ycl-common/src/main/java/com/ycl/utils/auth/OperatorAuthUtil.java
new file mode 100644
index 0000000..0cc6c4b
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/utils/auth/OperatorAuthUtil.java
@@ -0,0 +1,49 @@
+package com.ycl.utils.auth;
+
+import com.ycl.entity.auth.Operator;
+import com.ycl.enums.common.ResultCode;
+import com.ycl.exception.ApiException;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Controller;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Lyq
+ * @version 1.0
+ * @date 2022/9/9
+ */
+@Component
+public class OperatorAuthUtil {
+
+ @Resource
+ private UserAuthUtil userAuthUtil;
+
+ private static Map<Long, Operator> platformMap = new HashMap<>();
+
+ /**
+ * 鑾峰彇鎿嶄綔鑰�
+ *
+ * @param request
+ * @return
+ * @throws ApiException
+ */
+ public Operator fetchUser(HttpServletRequest request) throws ApiException {
+ try {
+ long memberId = userAuthUtil.fetchUserId(request);
+ Operator operator = platformMap.get(memberId);
+ if (operator != null) {
+ return operator;
+ }
+ String memberName = userAuthUtil.fetchUserName(request);
+ operator = new Operator(memberId, memberName);
+ platformMap.put(memberId, operator);
+ return operator;
+ } catch (Exception e) {
+ throw new ApiException(e.getMessage());
+ }
+ }
+}
diff --git a/ycl-common/src/main/java/com/ycl/utils/auth/UserAuthUtil.java b/ycl-common/src/main/java/com/ycl/utils/auth/UserAuthUtil.java
new file mode 100644
index 0000000..72c083d
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/utils/auth/UserAuthUtil.java
@@ -0,0 +1,62 @@
+package com.ycl.utils.auth;
+
+import cn.hutool.core.util.StrUtil;
+import com.ycl.entity.auth.AuthInfo;
+import com.ycl.enums.common.ResultCode;
+import com.ycl.exception.ApiException;
+import com.ycl.service.redis.RedisService;
+import com.ycl.utils.JwtTokenUtil;
+import com.ycl.utils.common.LiveTimeMillisecond;
+import com.ycl.utils.common.NetworkUtil;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * @author Lyq
+ * @version 1.0
+ * @date 2022/9/9
+ */
+@Component("userAuthUtil")
+public class UserAuthUtil {
+ @Resource
+ private JwtTokenUtil jwtTokenUtil;
+ @Resource
+ private RedisService redisService;
+
+
+ public void saveUser(Long userId, String token, String redisKey) {
+ redisService.set(redisKey.concat(userId.toString()), token, LiveTimeMillisecond.s2592000.time);
+ }
+
+ /**
+ * 鑾峰彇鎿嶄綔鍛榠d
+ *
+ * @param request
+ * @return
+ */
+ public long fetchUserId(HttpServletRequest request) {
+ String accessToken = NetworkUtil.getAccessToken(request);
+ if (StrUtil.isBlank(accessToken)) {
+ throw new ApiException(ResultCode.NOT_LOGGED);
+ }
+ AuthInfo authInfo = jwtTokenUtil.parseToken(accessToken);
+ return authInfo.getUserId();
+ }
+
+ /**
+ * 鑾峰彇鎿嶄綔鍛樺鍚�
+ *
+ * @param request
+ * @return
+ */
+ public String fetchUserName(HttpServletRequest request) {
+ String accessToken = NetworkUtil.getAccessToken(request);
+ if (StrUtil.isBlank(accessToken)) {
+ throw new ApiException(ResultCode.NOT_LOGGED);
+ }
+ AuthInfo authInfo = jwtTokenUtil.parseToken(accessToken);
+ return authInfo.getUsername();
+ }
+}
diff --git a/ycl-common/src/main/java/com/ycl/utils/common/LiveTimeMillisecond.java b/ycl-common/src/main/java/com/ycl/utils/common/LiveTimeMillisecond.java
new file mode 100644
index 0000000..de37e99
--- /dev/null
+++ b/ycl-common/src/main/java/com/ycl/utils/common/LiveTimeMillisecond.java
@@ -0,0 +1,75 @@
+package com.ycl.utils.common;
+
+/**
+ * redis缂撳瓨鏃堕棿
+ * 鍗曚綅姣
+ * @version 1.0
+ * @date 2022/9/9
+ */
+public enum LiveTimeMillisecond {
+
+ s1(1000),
+ /** 5绉� */
+ s5(5000),
+
+ /** 10绉� */
+ s10(10000),
+
+ /** 1鍒嗛挓 */
+ s60(60000),
+ /** 2鍒嗛挓 */
+
+ s120(120000),
+ /** 3鍒嗛挓*/
+ s180(180000),
+
+ /** 5鍒嗛挓*/
+ s300(300000),
+
+ /** 10鍒嗛挓 */
+ s600(600000),
+
+ /** 30鍒嗛挓 */
+ s1800(1800000),
+
+ /** 1灏忔椂 */
+ s3600(3600000),
+
+ /** 2灏忔椂 */
+ s7200(7200000),
+
+ /** 3灏忔椂 */
+ s10800(10800000),
+
+ /** 4灏忔椂 */
+ s14400(14400000),
+
+ /** 12灏忔椂 */
+ s43200(43200000),
+
+ /** 涓�澶� */
+ s86400(86400000),
+ /** 涓夊ぉ*/
+ s259200000(259200000),
+
+ /** 涓冨ぉ */
+ s604800(604800000),
+
+ /** 30澶�*/
+ s2592000(2592000000L),
+
+ /** 60澶�*/
+ s5184000(5184000000L),
+ /**180澶�*/
+ s15552000(15552000000L);
+
+ /**
+ * 瓒呮椂鏃堕棿 鍗曚綅绉�
+ */
+ public long time;
+
+ private LiveTimeMillisecond(long time) {
+ this.time = time;
+ }
+
+}
diff --git a/ycl-common/src/main/java/com/ycl/utils/redis/RedisKey.java b/ycl-common/src/main/java/com/ycl/utils/redis/RedisKey.java
index 658e6d0..a2665e0 100644
--- a/ycl-common/src/main/java/com/ycl/utils/redis/RedisKey.java
+++ b/ycl-common/src/main/java/com/ycl/utils/redis/RedisKey.java
@@ -7,5 +7,8 @@
* @since 2022-09-06
*/
public final class RedisKey {
-
+ /**
+ * 绠$悊鍚庡彴
+ */
+ public static final String PLATFORM_TOKEN_KEY = "platform-token:";
}
diff --git a/ycl-common/src/main/java/com/ycl/vo/depart/DepartVO.java b/ycl-common/src/main/java/com/ycl/vo/depart/DepartVO.java
index 66489d2..a7d2a9e 100644
--- a/ycl-common/src/main/java/com/ycl/vo/depart/DepartVO.java
+++ b/ycl-common/src/main/java/com/ycl/vo/depart/DepartVO.java
@@ -1,11 +1,14 @@
package com.ycl.vo.depart;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
import com.ycl.api.BasePageVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
+import java.util.List;
/**
* @author Lyq
@@ -23,13 +26,13 @@
private String departDes;
@ApiModelProperty("閮ㄩ棬绫诲瀷")
- private Integer departType;
+ private byte departType;
@ApiModelProperty("鐖剁骇id,榛樿0")
private Long parentId;
- @ApiModelProperty("鍋滅敤鐘舵�侊紝0->false,1->true,榛樿鍋滅敤")
- private byte status;
+// @ApiModelProperty("鍋滅敤鐘舵�侊紝0->false,1->true,榛樿鍋滅敤")
+// private byte status;
}
@ApiModel
@@ -63,18 +66,47 @@
private String departDes;
@ApiModelProperty("閮ㄩ棬绫诲瀷")
- private Integer departType;
+ private byte departType;
@ApiModelProperty("鐖剁骇id,榛樿0")
private Long parentId;
- @ApiModelProperty("鍋滅敤鐘舵�侊紝0->false,1->true,榛樿鍋滅敤")
- private byte status;
+ @ApiModelProperty("鐢ㄦ埛Id闆嗗悎")
+ private List<Long> userIds;
+
+// @ApiModelProperty("鍋滅敤鐘舵�侊紝0->false,1->true,榛樿鍋滅敤")
+// private byte status;
}
@ApiModel
@Data
public static class PageDepartVO extends BasePageVO {
+ @ApiModelProperty(value = "閮ㄩ棬绫诲瀷,0榛樿鏌ヨ鍏ㄩ儴", example = "0")
+ private Integer departType;
+ @ApiModelProperty("閮ㄩ棬鍚嶇О")
+ private String departName;
}
+
+ @Data
+ public static class AdminDepartInfoVO {
+ @ApiModelProperty("閮ㄩ棬Id")
+ private Long departId;
+
+ @ApiModelProperty("閮ㄩ棬鍚嶇О")
+ private String departName;
+
+ @ApiModelProperty("閮ㄩ棬鎻忚堪")
+ private String departDes;
+
+ @ApiModelProperty("閮ㄩ棬绫诲瀷")
+ private byte departType;
+
+ @ApiModelProperty("鐢ㄦ埛Id")
+ private Long userId;
+
+ @ApiModelProperty("鐢ㄦ埛鍚�")
+ private String userName;
+ }
+
}
diff --git a/ycl-common/src/main/java/com/ycl/vo/user/UserVO.java b/ycl-common/src/main/java/com/ycl/vo/user/UserVO.java
index fbfce15..47ebda7 100644
--- a/ycl-common/src/main/java/com/ycl/vo/user/UserVO.java
+++ b/ycl-common/src/main/java/com/ycl/vo/user/UserVO.java
@@ -18,11 +18,15 @@
@ApiModelProperty(value = "閮ㄩ棬id,0鍗充负鏌ヨ鍏ㄩ儴锛岄粯璁�0",example = "0")
private Long departmentId;
+
@ApiModelProperty(value = "鐢ㄦ埛绫诲瀷,0鍗充负鏌ヨ鍏ㄩ儴锛岄粯璁�0",example = "0")
private byte userType;
@ApiModelProperty(value = "鑱屽姟")
private String jobTitle;
+
+ @ApiModelProperty(value = "鐢佃瘽")
+ private String mobile;
}
}
diff --git a/ycl-common/src/main/resources/mapper/user/UmsAdminDepartMapper.xml b/ycl-common/src/main/resources/mapper/user/UmsAdminDepartMapper.xml
new file mode 100644
index 0000000..cca0e29
--- /dev/null
+++ b/ycl-common/src/main/resources/mapper/user/UmsAdminDepartMapper.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ycl.mapper.user.UmsAdminDepartMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.ycl.entity.user.UmsAdminDepart">
+ <id column="id" property="id"/>
+ <result column="user_id" property="userId"/>
+ <result column="depart_id" property="departId"/>
+ <result column="is_manager" property="isManager"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_time" property="updateTime"/>
+ </resultMap>
+ <!-- 閫氱敤鏌ヨ缁撴灉鍒� -->
+ <sql id="Base_Column_List">
+ id
+ , user_id,depart_id,is_manager,create_time,update_time
+ </sql>
+
+ <delete id="deletedByDepartId">
+ delete
+ from ums_admin_depart
+ where depart_id = #{departId}
+ </delete>
+
+ <select id="selectPageByUserId" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from ums_admin_depart
+ where user_id=#{userId}
+ limit #{current},#{pageSize}
+ </select>
+</mapper>
diff --git a/ycl-platform/src/main/java/com/ycl/controller/BaseController.java b/ycl-platform/src/main/java/com/ycl/controller/BaseController.java
new file mode 100644
index 0000000..13f48a6
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/controller/BaseController.java
@@ -0,0 +1,35 @@
+package com.ycl.controller;
+
+import com.ycl.entity.auth.Operator;
+import com.ycl.enums.common.ResultCode;
+import com.ycl.exception.ApiException;
+import com.ycl.utils.auth.OperatorAuthUtil;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * @author Lyq
+ * @version 1.0
+ * @date 2022/9/9
+ */
+@RestController
+public class BaseController {
+ @Resource
+ private OperatorAuthUtil operatorAuthUtil;
+ @Resource
+ protected HttpServletRequest request;
+
+ protected Operator fetchOperator(HttpServletRequest request) throws ApiException {
+ if (null == request) {
+ throw new ApiException(ResultCode.NULL_PARAMETER);
+ }
+
+ Operator operator = operatorAuthUtil.fetchUser(request);
+ if (null == operator) {
+ throw new ApiException(ResultCode.OPERATOR_TYPE_FETCH_FAIL);
+ }
+ return operator;
+ }
+}
diff --git a/ycl-platform/src/main/java/com/ycl/controller/depart/DepartController.java b/ycl-platform/src/main/java/com/ycl/controller/depart/DepartController.java
index 4c8303e..499e7a8 100644
--- a/ycl-platform/src/main/java/com/ycl/controller/depart/DepartController.java
+++ b/ycl-platform/src/main/java/com/ycl/controller/depart/DepartController.java
@@ -1,10 +1,20 @@
package com.ycl.controller.depart;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ycl.api.BasePageDTO;
+import com.ycl.api.BasePageVO;
+import com.ycl.api.CommonPage;
import com.ycl.api.CommonResult;
+import com.ycl.controller.BaseController;
+import com.ycl.dto.user.AdminDepartInfoDTO;
+import com.ycl.entity.auth.Operator;
import com.ycl.entity.depart.SccgDepart;
+import com.ycl.entity.user.UmsAdminDepart;
import com.ycl.entity.user.UmsMenu;
import com.ycl.service.depart.SccgDepartService;
+import com.ycl.service.user.UmsAdminDepartService;
import com.ycl.service.user.UmsMenuService;
import com.ycl.vo.depart.DepartVO;
import io.swagger.annotations.Api;
@@ -27,15 +37,24 @@
@RestController
@Api(tags = "閮ㄩ棬绠$悊妯″潡")
@RequestMapping("/depart")
-public class DepartController {
+public class DepartController extends BaseController {
@Autowired
private SccgDepartService departService;
+ @Resource
+ private UmsAdminDepartService umsAdminDepartService;
@ApiOperation("娣诲姞閮ㄩ棬")
@PostMapping(value = "/create")
public CommonResult<Void> create(@Validated @RequestBody DepartVO.AddDepartVO addDepartVO) {
departService.create(addDepartVO);
+ return CommonResult.success(null);
+ }
+
+ @ApiOperation("缂栬緫閮ㄩ棬")
+ @PostMapping(value = "/update")
+ public CommonResult<Void> create(@Validated @RequestBody DepartVO.UpdateDepartVO params) {
+ departService.update(params);
return CommonResult.success(null);
}
@@ -67,5 +86,18 @@
return CommonResult.success(null);
}
+ @ApiOperation("鏌ヨ鍏ㄩ儴閮ㄩ棬")
+ @GetMapping(value = "/page")
+ public CommonResult<IPage<SccgDepart>> page(DepartVO.PageDepartVO params) {
+ IPage<SccgDepart> page = departService.pageDepart(params);
+ return CommonResult.success(page);
+ }
+
+ @ApiOperation("鏌ヨ鎴戠殑閮ㄩ棬")
+ @GetMapping(value = "/belongDepart")
+ public CommonResult<BasePageDTO> belongDepart(BasePageVO params) {
+ BasePageDTO basePageDTO= umsAdminDepartService.belongDepart(fetchOperator(request).getOperatorId(), params.getCurrent(), params.getPageSize());
+ return CommonResult.success(basePageDTO);
+ }
}
diff --git a/ycl-platform/src/main/java/com/ycl/controller/user/UmsAdminController.java b/ycl-platform/src/main/java/com/ycl/controller/user/UmsAdminController.java
index 277425d..de4e2b0 100644
--- a/ycl-platform/src/main/java/com/ycl/controller/user/UmsAdminController.java
+++ b/ycl-platform/src/main/java/com/ycl/controller/user/UmsAdminController.java
@@ -5,13 +5,16 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ycl.api.CommonPage;
import com.ycl.api.CommonResult;
+import com.ycl.controller.BaseController;
import com.ycl.dto.UmsAdminLoginParam;
import com.ycl.dto.UmsAdminParam;
import com.ycl.dto.UpdateAdminPasswordParam;
import com.ycl.entity.user.UmsAdmin;
import com.ycl.entity.user.UmsRole;
+import com.ycl.service.redis.RedisService;
import com.ycl.service.user.UmsAdminService;
import com.ycl.service.user.UmsRoleService;
+import com.ycl.utils.redis.RedisKey;
import com.ycl.vo.user.UserVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -22,6 +25,7 @@
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.security.Principal;
import java.util.HashMap;
@@ -35,7 +39,7 @@
@Controller
@Api(tags = "鍚庡彴鐢ㄦ埛绠$悊")
@RequestMapping("/admin")
-public class UmsAdminController {
+public class UmsAdminController extends BaseController {
@Value("${jwt.tokenHeader}")
private String tokenHeader;
@Value("${jwt.tokenHead}")
@@ -44,6 +48,8 @@
private UmsAdminService adminService;
@Autowired
private UmsRoleService roleService;
+ @Resource
+ private RedisService redisService;
@ApiOperation(value = "鐢ㄦ埛娉ㄥ唽")
@RequestMapping(value = "/register", method = RequestMethod.POST)
@@ -110,13 +116,15 @@
@RequestMapping(value = "/logout", method = RequestMethod.POST)
@ResponseBody
public CommonResult logout() {
+ String operatorName = fetchOperator(request).getOperatorName();
+ redisService.del(RedisKey.PLATFORM_TOKEN_KEY.concat(operatorName));
return CommonResult.success(null);
}
@ApiOperation("鍒嗛〉")
- @RequestMapping(value = "/page", method = RequestMethod.GET)
+ @RequestMapping(value = "/list", method = RequestMethod.GET)
@ResponseBody
- public CommonResult<IPage<UmsAdmin>> list(@Validated UserVO.PageUserVO pageUserVO) {
+ public CommonResult<IPage<UmsAdmin>> list(@Validated UserVO.PageUserVO pageUserVO) {
IPage<UmsAdmin> page = adminService.pageUser(pageUserVO);
return CommonResult.success(page);
}
--
Gitblit v1.8.0