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