BF-202308171519\Administrator 2 лет назад
Родитель
Сommit
0c435091ff
17 измененных файлов с 129 добавлено и 32 удалено
  1. 1 1
      kxs-admin-ui/src/stores/themeConfig.ts
  2. 2 2
      kxs-admin-ui/src/views/admin/dict/index.vue
  3. 5 0
      kxs-common/kxs-common-core/src/main/java/com/kxs/common/core/constant/SecurityConstants.java
  4. 14 9
      kxs-common/kxs-common-security/src/main/java/com/kxs/common/security/service/KxsUserDetailsServiceImpl.java
  5. 1 0
      kxs-common/kxs-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  6. 0 4
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/RemoteClientDetailsService.java
  7. 0 3
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/RemoteDictService.java
  8. 0 3
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/RemoteLogService.java
  9. 0 3
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/RemoteParamService.java
  10. 28 0
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/RemoteUserService.java
  11. 61 7
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/config/AdminFeignClientConfiguration.java
  12. 3 0
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/model/SysDictItem.java
  13. 3 0
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/model/SysPublicParam.java
  14. 3 0
      kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/model/SysUser.java
  15. 2 0
      kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/controller/SysDictController.java
  16. 1 0
      kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/controller/SysUserController.java
  17. 5 0
      pom.xml

+ 1 - 1
kxs-admin-ui/src/stores/themeConfig.ts

@@ -143,7 +143,7 @@ export const useThemeConfig = defineStore('themeConfig', {
 			// 默认全局组件大小,可选值"<large|'default'|small>",默认 'default'
 			// 默认全局组件大小,可选值"<large|'default'|small>",默认 'default'
 			globalComponentSize: 'default',
 			globalComponentSize: 'default',
 			// footer 页面作者
 			// footer 页面作者
-			footerAuthor: '©2023 shikongyizhan.com',
+			footerAuthor: '©2023 lxq.com',
 		},
 		},
 	}),
 	}),
 	actions: {
 	actions: {

+ 2 - 2
kxs-admin-ui/src/views/admin/dict/index.vue

@@ -23,12 +23,12 @@
 											<span class="code">{{ data.dictType }}</span>
 											<span class="code">{{ data.dictType }}</span>
 											<span class="do">
 											<span class="do">
 												<el-button-group>
 												<el-button-group>
-													<el-button icon="el-icon-edit" size="small" @click.stop="dicDialogRef.openDialog(data.id)"></el-button>
+													<el-button icon="edit-pen" size="small" @click.stop="dicDialogRef.openDialog(data.id)"></el-button>
 													<el-tooltip :content="$t('sysdict.deleteDisabledTip')" :disabled="data.systemFlag === '0'" placement="top">
 													<el-tooltip :content="$t('sysdict.deleteDisabledTip')" :disabled="data.systemFlag === '0'" placement="top">
 														<span style="margin-left: 12px">
 														<span style="margin-left: 12px">
 															<el-button
 															<el-button
 																:disabled="data.systemFlag !== '0'"
 																:disabled="data.systemFlag !== '0'"
-																icon="el-icon-delete"
+																icon="delete"
 																size="small"
 																size="small"
 																@click.stop="handleDelete([data.id])"
 																@click.stop="handleDelete([data.id])"
 															></el-button>
 															></el-button>

+ 5 - 0
kxs-common/kxs-common-core/src/main/java/com/kxs/common/core/constant/SecurityConstants.java

@@ -17,6 +17,11 @@ public interface SecurityConstants {
 	 */
 	 */
 	String PROJECT_PREFIX = "kxs";
 	String PROJECT_PREFIX = "kxs";
 
 
+	/**
+	 * BEARER
+	 */
+	String TOKEN_TYPE = "Bearer";
+
 	/**
 	/**
 	 * 内部
 	 * 内部
 	 */
 	 */

+ 14 - 9
kxs-common/kxs-common-security/src/main/java/com/kxs/common/security/service/KxsUserDetailsServiceImpl.java

@@ -1,4 +1,4 @@
-package com.kxs.system.biz.security;
+package com.kxs.common.security.service;
 
 
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.StrUtil;
@@ -6,11 +6,13 @@ import com.kxs.common.core.constant.CacheConstants;
 import com.kxs.common.core.constant.CommonConstants;
 import com.kxs.common.core.constant.CommonConstants;
 import com.kxs.common.core.constant.SecurityConstants;
 import com.kxs.common.core.constant.SecurityConstants;
 import com.kxs.common.core.constant.enums.ErrorTypeEnum;
 import com.kxs.common.core.constant.enums.ErrorTypeEnum;
+import com.kxs.common.core.util.R;
+import com.kxs.common.core.util.RetOps;
 import com.kxs.common.security.model.KxsUser;
 import com.kxs.common.security.model.KxsUser;
-import com.kxs.common.security.service.KxsUserDetailsService;
+import com.kxs.system.api.dto.UserDTO;
 import com.kxs.system.api.dto.UserInfo;
 import com.kxs.system.api.dto.UserInfo;
+import com.kxs.system.api.feign.RemoteUserService;
 import com.kxs.system.api.model.SysUser;
 import com.kxs.system.api.model.SysUser;
-import com.kxs.system.biz.service.SysUserService;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
@@ -38,7 +40,7 @@ import java.util.*;
 @Service
 @Service
 public class KxsUserDetailsServiceImpl implements KxsUserDetailsService {
 public class KxsUserDetailsServiceImpl implements KxsUserDetailsService {
 
 
-	private final SysUserService remoteUserService;
+	private final RemoteUserService remoteUserService;
 
 
 	private final CacheManager cacheManager;
 	private final CacheManager cacheManager;
 
 
@@ -56,11 +58,14 @@ public class KxsUserDetailsServiceImpl implements KxsUserDetailsService {
 			return (KxsUser) Objects.requireNonNull(cache.get(username)).get();
 			return (KxsUser) Objects.requireNonNull(cache.get(username)).get();
 		}
 		}
 
 
-		UserInfo sysUser = remoteUserService.loadUserByUsername(username);
-		if(sysUser == null){
-			throw new UsernameNotFoundException(ErrorTypeEnum.USER_NOT_FOUND.getDescription());
-		}
-		UserDetails userDetails = getUserDetails(sysUser);
+		UserDTO userDTO = new UserDTO();
+		userDTO.setUsername(username);
+		R<UserInfo> result = remoteUserService.info(userDTO, SecurityConstants.FROM_IN);
+
+		UserInfo info = RetOps.of(result).getData().orElseThrow(() ->
+				new UsernameNotFoundException(ErrorTypeEnum.USER_NOT_FOUND.getDescription()));
+		UserDetails userDetails = getUserDetails(info);
+
 		if (cache != null) {
 		if (cache != null) {
 			cache.put(username, userDetails);
 			cache.put(username, userDetails);
 		}
 		}

+ 1 - 0
kxs-common/kxs-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -3,3 +3,4 @@ com.kxs.common.security.service.KxsRedisOAuth2AuthorizationConsentService
 com.kxs.common.security.component.SkySecurityInnerAspect
 com.kxs.common.security.component.SkySecurityInnerAspect
 com.kxs.common.security.component.SkySecurityMessageSourceConfiguration
 com.kxs.common.security.component.SkySecurityMessageSourceConfiguration
 com.kxs.common.security.service.KxsRemoteRegisteredClientRepository
 com.kxs.common.security.service.KxsRemoteRegisteredClientRepository
+com.kxs.common.security.service.KxsUserDetailsServiceImpl

+ 0 - 4
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/RemoteClientDetailsService.java

@@ -1,14 +1,11 @@
 package com.kxs.system.api.feign;
 package com.kxs.system.api.feign;
 
 
 import com.kxs.common.core.constant.SecurityConstants;
 import com.kxs.common.core.constant.SecurityConstants;
-import com.kxs.common.core.constant.ServiceNameConstants;
 import com.kxs.common.core.util.R;
 import com.kxs.common.core.util.R;
 import com.kxs.system.api.model.SysOauthClientDetails;
 import com.kxs.system.api.model.SysOauthClientDetails;
-import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.service.annotation.GetExchange;
 import org.springframework.web.service.annotation.GetExchange;
-import org.springframework.web.service.annotation.HttpExchange;
 
 
 import java.util.List;
 import java.util.List;
 
 
@@ -19,7 +16,6 @@ import java.util.List;
  * @author 没秃顶的码农
  * @author 没秃顶的码农
  * @date 2023/11/14
  * @date 2023/11/14
  */
  */
-@HttpExchange(ServiceNameConstants.ADMIN_SERVICE)
 public interface RemoteClientDetailsService {
 public interface RemoteClientDetailsService {
 
 
 	/**
 	/**

+ 0 - 3
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/RemoteDictService.java

@@ -1,9 +1,7 @@
 package com.kxs.system.api.feign;
 package com.kxs.system.api.feign;
 
 
-import com.kxs.common.core.constant.ServiceNameConstants;
 import com.kxs.common.core.util.R;
 import com.kxs.common.core.util.R;
 import com.kxs.system.api.model.SysDictItem;
 import com.kxs.system.api.model.SysDictItem;
-import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.service.annotation.GetExchange;
 import org.springframework.web.service.annotation.GetExchange;
 import org.springframework.web.service.annotation.HttpExchange;
 import org.springframework.web.service.annotation.HttpExchange;
@@ -16,7 +14,6 @@ import java.util.List;
  * <p>
  * <p>
  * 查询参数相关
  * 查询参数相关
  */
  */
-@HttpExchange(ServiceNameConstants.ADMIN_SERVICE)
 public interface RemoteDictService {
 public interface RemoteDictService {
 
 
 	/**
 	/**

+ 0 - 3
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/RemoteLogService.java

@@ -1,11 +1,9 @@
 package com.kxs.system.api.feign;
 package com.kxs.system.api.feign;
 
 
 import com.kxs.common.core.constant.SecurityConstants;
 import com.kxs.common.core.constant.SecurityConstants;
-import com.kxs.common.core.constant.ServiceNameConstants;
 import com.kxs.system.api.model.SysLog;
 import com.kxs.system.api.model.SysLog;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestHeader;
-import org.springframework.web.service.annotation.HttpExchange;
 import org.springframework.web.service.annotation.PostExchange;
 import org.springframework.web.service.annotation.PostExchange;
 
 
 
 
@@ -15,7 +13,6 @@ import org.springframework.web.service.annotation.PostExchange;
  * @author 没秃顶的码农
  * @author 没秃顶的码农
  * @date 2023/11/12
  * @date 2023/11/12
  */
  */
-@HttpExchange(ServiceNameConstants.ADMIN_SERVICE)
 public interface RemoteLogService {
 public interface RemoteLogService {
 
 
 	/**
 	/**

+ 0 - 3
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/RemoteParamService.java

@@ -1,12 +1,10 @@
 package com.kxs.system.api.feign;
 package com.kxs.system.api.feign;
 
 
 import com.kxs.common.core.constant.SecurityConstants;
 import com.kxs.common.core.constant.SecurityConstants;
-import com.kxs.common.core.constant.ServiceNameConstants;
 import com.kxs.common.core.util.R;
 import com.kxs.common.core.util.R;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestHeader;
-import org.springframework.web.service.annotation.HttpExchange;
 
 
 /**
 /**
  * @author LXQ
  * @author LXQ
@@ -14,7 +12,6 @@ import org.springframework.web.service.annotation.HttpExchange;
  * <p>
  * <p>
  * 查询参数相关
  * 查询参数相关
  */
  */
-@HttpExchange(ServiceNameConstants.ADMIN_SERVICE)
 public interface RemoteParamService {
 public interface RemoteParamService {
 
 
 	/**
 	/**

+ 28 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/RemoteUserService.java

@@ -0,0 +1,28 @@
+
+
+package com.kxs.system.api.feign;
+
+import com.kxs.common.core.constant.SecurityConstants;
+import com.kxs.common.core.util.R;
+import com.kxs.system.api.dto.UserDTO;
+import com.kxs.system.api.dto.UserInfo;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.service.annotation.GetExchange;
+
+/**
+ * @author lengleng
+ * @date 2018/6/22
+ */
+public interface RemoteUserService {
+
+	/**
+	 * 通过用户名查询用户、角色信息
+	 * @param user 用户查询对象
+	 * @param from 调用标志
+	 * @return R
+	 */
+	@GetExchange("/user/info/query")
+	R<UserInfo> info(@RequestBody UserDTO user, @RequestHeader(SecurityConstants.FROM) String from);
+
+}

+ 61 - 7
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/feign/config/AdminFeignClientConfiguration.java

@@ -1,16 +1,25 @@
 package com.kxs.system.api.feign.config;
 package com.kxs.system.api.feign.config;
 
 
+import cn.hutool.core.util.StrUtil;
+import com.kxs.common.core.constant.SecurityConstants;
 import com.kxs.common.core.constant.ServiceNameConstants;
 import com.kxs.common.core.constant.ServiceNameConstants;
-import com.kxs.system.api.feign.RemoteClientDetailsService;
-import com.kxs.system.api.feign.RemoteLogService;
+import com.kxs.common.core.util.WebUtils;
+import com.kxs.system.api.feign.*;
+import jakarta.servlet.http.HttpServletRequest;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.http.HttpHeaders;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 import org.springframework.web.reactive.function.client.ClientRequest;
 import org.springframework.web.reactive.function.client.ClientRequest;
 import org.springframework.web.reactive.function.client.WebClient;
 import org.springframework.web.reactive.function.client.WebClient;
 import org.springframework.web.reactive.function.client.support.WebClientAdapter;
 import org.springframework.web.reactive.function.client.support.WebClientAdapter;
 import org.springframework.web.service.invoker.HttpServiceProxyFactory;
 import org.springframework.web.service.invoker.HttpServiceProxyFactory;
 
 
+import java.util.Optional;
+
 /**
 /**
  * <p>
  * <p>
  * 当前服务的webClient配置
  * 当前服务的webClient配置
@@ -28,14 +37,23 @@ public class AdminFeignClientConfiguration {
 
 
     @Bean
     @Bean
     public WebClient oauthRequestInterceptor() {
     public WebClient oauthRequestInterceptor() {
+
         return WebClient.builder()
         return WebClient.builder()
-                //添加全局默认请求头
-                .defaultHeader("source", "http-interface")
                 //给请求添加过滤器,添加自定义的认证头
                 //给请求添加过滤器,添加自定义的认证头
                 .filter((request, next) -> {
                 .filter((request, next) -> {
-                    ClientRequest filtered = ClientRequest.from(request)
-                            .build();
-                    return next.exchange(filtered);
+                    ClientRequest.Builder filtered = ClientRequest.from(request);
+
+                    ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+                    //不是web请求不传递token
+                    if(requestAttributes != null){
+                        HttpServletRequest httpServletRequest = requestAttributes.getRequest();
+                        String token = httpServletRequest.getHeader(HttpHeaders.AUTHORIZATION);
+                        if (!StrUtil.isBlank(token)) {
+                            //传递token
+                            filtered.header(HttpHeaders.AUTHORIZATION, token);
+                        }
+                    }
+                    return next.exchange(filtered.build());
                 })
                 })
                 .baseUrl(ServiceNameConstants.ADMIN_SERVICE).build();
                 .baseUrl(ServiceNameConstants.ADMIN_SERVICE).build();
     }
     }
@@ -63,4 +81,40 @@ public class AdminFeignClientConfiguration {
         HttpServiceProxyFactory factory = HttpServiceProxyFactory.builder(WebClientAdapter.forClient(client)).build();
         HttpServiceProxyFactory factory = HttpServiceProxyFactory.builder(WebClientAdapter.forClient(client)).build();
         return factory.createClient(RemoteClientDetailsService.class);
         return factory.createClient(RemoteClientDetailsService.class);
     }
     }
+
+    /**
+     * 用户
+     *
+     * @param client 客户端
+     * @return 远程用户服务
+     */
+    @Bean
+    RemoteUserService remoteUserService(WebClient client) {
+        HttpServiceProxyFactory factory = HttpServiceProxyFactory.builder(WebClientAdapter.forClient(client)).build();
+        return factory.createClient(RemoteUserService.class);
+    }
+
+    /**
+     * 字典
+     *
+     * @param client 客户端
+     * @return 字典
+     */
+    @Bean
+    RemoteDictService remoteDictService(WebClient client) {
+        HttpServiceProxyFactory factory = HttpServiceProxyFactory.builder(WebClientAdapter.forClient(client)).build();
+        return factory.createClient(RemoteDictService.class);
+    }
+
+    /**
+     * 参数
+     *
+     * @param client 客户端
+     * @return 参数
+     */
+    @Bean
+    RemoteParamService remoteParamService(WebClient client) {
+        HttpServiceProxyFactory factory = HttpServiceProxyFactory.builder(WebClientAdapter.forClient(client)).build();
+        return factory.createClient(RemoteParamService.class);
+    }
 }
 }

+ 3 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/model/SysDictItem.java

@@ -2,6 +2,7 @@ package com.kxs.system.api.model;
 
 
 import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.Data;
@@ -87,6 +88,7 @@ public class SysDictItem extends Model<SysDictItem> {
 	 */
 	 */
 	@TableField(fill = FieldFill.INSERT)
 	@TableField(fill = FieldFill.INSERT)
 	@Schema(description = "创建时间")
 	@Schema(description = "创建时间")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	private LocalDateTime createTime;
 	private LocalDateTime createTime;
 
 
 	/**
 	/**
@@ -94,6 +96,7 @@ public class SysDictItem extends Model<SysDictItem> {
 	 */
 	 */
 	@TableField(fill = FieldFill.UPDATE)
 	@TableField(fill = FieldFill.UPDATE)
 	@Schema(description = "更新时间")
 	@Schema(description = "更新时间")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	private LocalDateTime updateTime;
 	private LocalDateTime updateTime;
 
 
 	/**
 	/**

+ 3 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/model/SysPublicParam.java

@@ -3,6 +3,7 @@ package com.kxs.system.api.model;
 
 
 import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
@@ -98,6 +99,7 @@ public class SysPublicParam extends Model<SysPublicParam> {
 	 */
 	 */
 	@TableField(fill = FieldFill.INSERT)
 	@TableField(fill = FieldFill.INSERT)
 	@Schema(description = "创建时间")
 	@Schema(description = "创建时间")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	private LocalDateTime createTime;
 	private LocalDateTime createTime;
 
 
 	/**
 	/**
@@ -105,6 +107,7 @@ public class SysPublicParam extends Model<SysPublicParam> {
 	 */
 	 */
 	@TableField(fill = FieldFill.UPDATE)
 	@TableField(fill = FieldFill.UPDATE)
 	@Schema(description = "更新时间")
 	@Schema(description = "更新时间")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	private LocalDateTime updateTime;
 	private LocalDateTime updateTime;
 
 
 }
 }

+ 3 - 0
kxs-system/kxs-system-api/src/main/java/com/kxs/system/api/model/SysUser.java

@@ -1,6 +1,7 @@
 package com.kxs.system.api.model;
 package com.kxs.system.api.model;
 
 
 import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.Data;
@@ -67,6 +68,7 @@ public class SysUser implements Serializable {
 	 */
 	 */
 	@TableField(fill = FieldFill.INSERT)
 	@TableField(fill = FieldFill.INSERT)
 	@Schema(description = "创建时间")
 	@Schema(description = "创建时间")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	private LocalDateTime createTime;
 	private LocalDateTime createTime;
 
 
 	/**
 	/**
@@ -74,6 +76,7 @@ public class SysUser implements Serializable {
 	 */
 	 */
 	@TableField(fill = FieldFill.UPDATE)
 	@TableField(fill = FieldFill.UPDATE)
 	@Schema(description = "修改时间")
 	@Schema(description = "修改时间")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	private LocalDateTime updateTime;
 	private LocalDateTime updateTime;
 
 
 	/**
 	/**

+ 2 - 0
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/controller/SysDictController.java

@@ -4,6 +4,8 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kxs.common.security.model.KxsUser;
+import com.kxs.common.security.util.SecurityUtils;
 import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
 import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
 import com.kxs.system.api.model.SysDict;
 import com.kxs.system.api.model.SysDict;
 import com.kxs.system.api.model.SysDictItem;
 import com.kxs.system.api.model.SysDictItem;

+ 1 - 0
kxs-system/kxs-system-biz/src/main/java/com/kxs/system/biz/controller/SysUserController.java

@@ -11,6 +11,7 @@ import com.kxs.common.security.annotation.Inner;
 import com.kxs.common.security.util.SecurityUtils;
 import com.kxs.common.security.util.SecurityUtils;
 import com.kxs.system.api.dto.UserDTO;
 import com.kxs.system.api.dto.UserDTO;
 import com.kxs.system.api.model.SysUser;
 import com.kxs.system.api.model.SysUser;
+import com.kxs.system.api.util.DictResolver;
 import com.kxs.system.biz.constant.enums.ErrorTypeEnum;
 import com.kxs.system.biz.constant.enums.ErrorTypeEnum;
 import com.kxs.system.biz.service.SysUserService;
 import com.kxs.system.biz.service.SysUserService;
 import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
 import com.pig4cloud.plugin.excel.annotation.ResponseExcel;

+ 5 - 0
pom.xml

@@ -50,6 +50,11 @@
             <groupId>org.springframework.boot</groupId>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-webflux</artifactId>
             <artifactId>spring-boot-starter-webflux</artifactId>
         </dependency>
         </dependency>
+        <!--feign 依赖-->
+<!--        <dependency>-->
+<!--            <groupId>org.springframework.cloud</groupId>-->
+<!--            <artifactId>spring-cloud-starter-openfeign</artifactId>-->
+<!--        </dependency>-->
         <!--Lombok-->
         <!--Lombok-->
         <dependency>
         <dependency>
             <groupId>org.projectlombok</groupId>
             <groupId>org.projectlombok</groupId>