diff --git a/youlai-auth/pom.xml b/youlai-auth/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b975e32d57dcc3942aa419758fed5f00ca12253d
--- /dev/null
+++ b/youlai-auth/pom.xml
@@ -0,0 +1,111 @@
+
+
+
+ youlai-mall
+ com.youlai
+ 1.0.0-SNAPSHOT
+
+ 4.0.0
+ youlai-mall-auth
+
+
+
+ com.fly4j
+ yshop-common-db
+ ${yshop.version}
+
+
+
+ com.fly4j
+ yshop-common-core
+ ${yshop.version}
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-eureka-server
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-oauth2
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-config
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+ com.spotify
+ docker-maven-plugin
+ 1.0.0
+
+
+
+
+
+
+
+ ${docker.image.prefix}/${project.artifactId}
+
+
+ latest
+
+
+ java
+
+ ${docker.image.prefix}
+
+
+ /ROOT
+
+
+ ["java","-Djava.security.egd=file:/dev/./urandom","-jar","${project.build.finalName}.jar"]
+
+
+
+ https://fly4j:2376
+ C:\certs\docker\fly4j
+
+
+
+ /ROOT
+
+ ${project.build.directory}
+
+ ${project.build.finalName}.jar
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/youlai-auth/src/main/java/com/youlai/mall/auth/AuthApplication.java b/youlai-auth/src/main/java/com/youlai/mall/auth/AuthApplication.java
new file mode 100644
index 0000000000000000000000000000000000000000..719b9fdcb67833271e374dfd405609790b26b4d6
--- /dev/null
+++ b/youlai-auth/src/main/java/com/youlai/mall/auth/AuthApplication.java
@@ -0,0 +1,15 @@
+package com.youlai.mall.auth;
+
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
+@EnableDiscoveryClient
+public class AuthApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(AuthApplication.class,args);
+ }
+}
diff --git a/youlai-auth/src/main/java/com/youlai/mall/auth/config/AuthorizationServerConfig.java b/youlai-auth/src/main/java/com/youlai/mall/auth/config/AuthorizationServerConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..604627a220f5aca050beaf3d521b14c5e20e1371
--- /dev/null
+++ b/youlai-auth/src/main/java/com/youlai/mall/auth/config/AuthorizationServerConfig.java
@@ -0,0 +1,83 @@
+package com.youlai.mall.auth.config;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import com.netflix.discovery.converters.Auto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
+import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurer;
+import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;
+import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer;
+import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerSecurityConfigurer;
+import org.springframework.security.oauth2.provider.ClientDetailsService;
+import org.springframework.security.oauth2.provider.client.JdbcClientDetailsService;
+import org.springframework.security.oauth2.provider.token.DefaultTokenServices;
+import org.springframework.security.oauth2.provider.token.TokenStore;
+import org.springframework.security.oauth2.provider.token.store.JdbcTokenStore;
+
+import javax.sql.DataSource;
+
+@Configuration
+@EnableAuthorizationServer
+public class AuthorizationServerConfig implements AuthorizationServerConfigurer {
+
+ @Autowired
+ private UserDetailsService userDetailsService;
+
+ @Autowired
+ private AuthenticationManager authenticationManager;
+
+ @Autowired
+ private DataSource dataSource;
+
+ @Bean
+ public TokenStore jdbcTokenStore() {
+ return new JdbcTokenStore(dataSource);
+ }
+
+ @Bean
+ public ClientDetailsService clientDetailsService() {
+ return new JdbcClientDetailsService(dataSource);
+ }
+
+ @Override
+ public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
+ clients.withClientDetails(clientDetailsService());
+ }
+
+ @Override
+ public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
+ endpoints.tokenStore(jdbcTokenStore())
+ .userDetailsService(userDetailsService)
+ .authenticationManager(authenticationManager);
+ endpoints.tokenServices(defaultTokenServices());
+ }
+
+
+ @Primary
+ @Bean
+ public DefaultTokenServices defaultTokenServices(){
+ DefaultTokenServices tokenServices = new DefaultTokenServices();
+ tokenServices.setTokenStore(jdbcTokenStore());
+ tokenServices.setSupportRefreshToken(true);
+ // token有效期自定义设置,默认12小时
+ tokenServices.setAccessTokenValiditySeconds(60*60*12);
+ // refresh_token默认30天
+ tokenServices.setRefreshTokenValiditySeconds(60 * 60 * 24 * 7);
+ return tokenServices;
+ }
+
+ @Override
+ public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
+ security
+ .allowFormAuthenticationForClients()
+ .tokenKeyAccess("permitAll()") // oauth/token_key公开
+ .checkTokenAccess("permitAll()"); // oauth/check_token公开
+ }
+
+}
diff --git a/youlai-auth/src/main/java/com/youlai/mall/auth/config/CorsConfig.java b/youlai-auth/src/main/java/com/youlai/mall/auth/config/CorsConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..f790cee9dc9f0cd65c01b6228ab801211dddb0f5
--- /dev/null
+++ b/youlai-auth/src/main/java/com/youlai/mall/auth/config/CorsConfig.java
@@ -0,0 +1,27 @@
+package com.youlai.mall.auth.config;
+
+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.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+@Configuration
+@Order(Ordered.HIGHEST_PRECEDENCE)
+public class CorsConfig {
+
+ @Bean
+ public CorsFilter corsFilter() {
+ final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
+ final CorsConfiguration corsConfiguration = new CorsConfiguration();
+ corsConfiguration.setAllowCredentials(true);
+ corsConfiguration.addAllowedOrigin("*");
+ corsConfiguration.addAllowedHeader("*");
+ corsConfiguration.addAllowedMethod("*");
+ urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
+ return new CorsFilter(urlBasedCorsConfigurationSource);
+ }
+
+}
diff --git a/youlai-auth/src/main/java/com/youlai/mall/auth/config/DruidConfig.java b/youlai-auth/src/main/java/com/youlai/mall/auth/config/DruidConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..c3444c7eda525816c4206e0318d9d330430b54c9
--- /dev/null
+++ b/youlai-auth/src/main/java/com/youlai/mall/auth/config/DruidConfig.java
@@ -0,0 +1,16 @@
+package com.youlai.mall.auth.config;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+
+import javax.sql.DataSource;
+
+public class DruidConfig {
+
+ @ConfigurationProperties(prefix = "spring.datasource")
+ @Bean
+ public DataSource druidDataSource() {
+ return new DruidDataSource();
+ }
+}
diff --git a/youlai-auth/src/main/java/com/youlai/mall/auth/config/ResourceServerConfig.java b/youlai-auth/src/main/java/com/youlai/mall/auth/config/ResourceServerConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..7d15c7a37ba3f9f35b258c0460eec6fffe03072d
--- /dev/null
+++ b/youlai-auth/src/main/java/com/youlai/mall/auth/config/ResourceServerConfig.java
@@ -0,0 +1,28 @@
+package com.youlai.mall.auth.config;
+
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.HttpMethod;
+import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
+import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
+
+@Configuration
+@EnableResourceServer
+@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true, jsr250Enabled = true)
+public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
+ @Override
+ public void configure(HttpSecurity http) throws Exception {
+ http
+ //允许使用iframe 嵌套,避免swagger-ui 不被加载的问题
+ .headers()
+ .frameOptions().disable()
+ .and()
+ .authorizeRequests()
+ .antMatchers(HttpMethod.GET, "/user/**").permitAll()
+ .anyRequest().authenticated()
+ .and()
+ .csrf().disable();
+ }
+}
\ No newline at end of file
diff --git a/youlai-auth/src/main/java/com/youlai/mall/auth/config/WebSecurityConfig.java b/youlai-auth/src/main/java/com/youlai/mall/auth/config/WebSecurityConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..d71961efeb56e53d62d7888688970a01bd2ebe01
--- /dev/null
+++ b/youlai-auth/src/main/java/com/youlai/mall/auth/config/WebSecurityConfig.java
@@ -0,0 +1,59 @@
+package com.youlai.mall.auth.config;
+
+import com.youlai.mall.auth.config.service.UserDetailsServiceImpl;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.annotation.Order;
+import org.springframework.http.HttpMethod;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
+import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+
+@Configuration
+@EnableWebSecurity
+@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true, jsr250Enabled = true)
+@Order(-1)
+public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
+
+ @Bean
+ public BCryptPasswordEncoder passwordEncoder(){
+ return new BCryptPasswordEncoder();
+ }
+
+ @Bean
+ @Override
+ protected AuthenticationManager authenticationManager() throws Exception {
+ return super.authenticationManager();
+ }
+
+ @Bean
+ @Override
+ public UserDetailsService userDetailsService() {
+ return new UserDetailsServiceImpl();
+ }
+
+ @Override
+ protected void configure(AuthenticationManagerBuilder auth) throws Exception {
+ auth.userDetailsService(userDetailsService());
+ }
+
+
+ @Override
+ protected void configure(HttpSecurity http) throws Exception {
+ http.requestMatchers()
+ .antMatchers(HttpMethod.OPTIONS,"/oauth/token")
+ .and()
+ .cors()
+ .and()
+ .csrf()
+ .disable()
+
+ .authorizeRequests().anyRequest().authenticated()
+ .and().csrf().disable();
+ }
+}
diff --git a/youlai-auth/src/main/java/com/youlai/mall/auth/config/service/UserDetailsServiceImpl.java b/youlai-auth/src/main/java/com/youlai/mall/auth/config/service/UserDetailsServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..9fb08076221a002b05510a186f9ff520b024b527
--- /dev/null
+++ b/youlai-auth/src/main/java/com/youlai/mall/auth/config/service/UserDetailsServiceImpl.java
@@ -0,0 +1,52 @@
+package com.youlai.mall.auth.config.service;
+
+import com.youlai.mall.auth.entity.SysPermission;
+import com.youlai.mall.auth.entity.SysUser;
+import com.youlai.mall.auth.service.ISysPermissionService;
+import com.youlai.mall.auth.service.ISysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+import org.springframework.security.core.userdetails.User;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+/**
+ * 自定义用户认证和授权
+ */
+@Service
+public class UserDetailsServiceImpl implements UserDetailsService {
+
+ @Autowired
+ private ISysUserService iSysUserService;
+
+ @Autowired
+ private ISysPermissionService iSysPermissionService;
+
+ @Override
+ public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
+ SysUser sysUser = iSysUserService.getByUserName(username);
+ List grantedAuthorities = new ArrayList<>();
+ if (sysUser != null) {
+ List permissions = iSysPermissionService.getByUserId(sysUser.getUserId());
+ if(permissions!=null){
+ List perms = permissions.stream().map(item -> item.getPerms()).collect(Collectors.toList());
+ perms.forEach(perm->{
+ grantedAuthorities.add(new SimpleGrantedAuthority(perm));
+ });
+ }
+ }
+ return new User(sysUser.getUserName(),sysUser.getPassword(),true,true,true,true,grantedAuthorities);
+ }
+
+
+
+
+}
diff --git a/youlai-auth/src/main/java/com/youlai/mall/auth/controller/TokenController.java b/youlai-auth/src/main/java/com/youlai/mall/auth/controller/TokenController.java
new file mode 100644
index 0000000000000000000000000000000000000000..28cfe452fc12005d6de4adfbc9be6ada0ee17e88
--- /dev/null
+++ b/youlai-auth/src/main/java/com/youlai/mall/auth/controller/TokenController.java
@@ -0,0 +1,47 @@
+package com.youlai.mall.auth.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.api.R;
+import com.youlai.mall.auth.entity.SysUser;
+import com.youlai.mall.auth.service.ISysUserService;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
+import org.springframework.security.oauth2.common.OAuth2AccessToken;
+import org.springframework.security.oauth2.provider.token.TokenStore;
+import org.springframework.web.bind.annotation.*;
+
+import java.security.Principal;
+
+@RestController
+@RequestMapping("/user")
+public class TokenController {
+
+ @Autowired
+ private TokenStore jdbcTokenStore;
+
+ @Autowired
+ private ISysUserService iSysUserService;
+
+ @GetMapping("/current")
+ public R current(Principal principal) {
+ String username = principal.getName();
+ SysUser user = iSysUserService.getOne(new LambdaQueryWrapper().eq(SysUser::getUserName, username));
+ return R.ok(user);
+ }
+
+ @DeleteMapping("/logout")
+ public R logout(@RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authHeader) {
+ if (StringUtils.isBlank(authHeader)) {
+ return R.failed("");
+ }
+ String tokenValue = authHeader.replace(OAuth2AccessToken.BEARER_TYPE.toLowerCase(), "").trim();
+ OAuth2AccessToken oAuth2AccessToken = jdbcTokenStore.readAccessToken(tokenValue);
+ if (oAuth2AccessToken == null || StringUtils.isBlank(oAuth2AccessToken.getValue())) {
+ return R.failed("");
+ }
+ jdbcTokenStore.removeAccessToken(oAuth2AccessToken);
+ return R.ok(null);
+ }
+}
diff --git a/youlai-auth/src/main/java/com/youlai/mall/auth/entity/SysPermission.java b/youlai-auth/src/main/java/com/youlai/mall/auth/entity/SysPermission.java
new file mode 100644
index 0000000000000000000000000000000000000000..6232f63258189ae9f4d5848688b5d42ed54b2e41
--- /dev/null
+++ b/youlai-auth/src/main/java/com/youlai/mall/auth/entity/SysPermission.java
@@ -0,0 +1,17 @@
+package com.youlai.mall.auth.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@TableName("sys_permission")
+@Accessors(chain = true)
+public class SysPermission {
+
+ @TableId
+ private Long permissionId;
+ private String permissionName;
+ private String perms;
+}
diff --git a/youlai-auth/src/main/java/com/youlai/mall/auth/entity/SysUser.java b/youlai-auth/src/main/java/com/youlai/mall/auth/entity/SysUser.java
new file mode 100644
index 0000000000000000000000000000000000000000..d7fdd6f172fd99981fc5d7a348942f03f0dee0a5
--- /dev/null
+++ b/youlai-auth/src/main/java/com/youlai/mall/auth/entity/SysUser.java
@@ -0,0 +1,28 @@
+package com.youlai.mall.auth.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@TableName("sys_user")
+@Accessors(chain = true)
+public class SysUser extends BaseEntity {
+
+ @TableId
+ private Long userId;
+ private String userName;
+ private String nickName;
+ private Integer sex;
+ private String password;
+ private String salt;
+ private Long deptId;
+ private String delFlag;
+ private Integer status;
+ private String avatarUrl;
+ private String tel;
+ private String email;
+
+
+}
diff --git a/youlai-auth/src/main/java/com/youlai/mall/auth/mapper/SysPermissionMapper.java b/youlai-auth/src/main/java/com/youlai/mall/auth/mapper/SysPermissionMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..f730ac144872eb12a13cae45fba6552ddc8eebd0
--- /dev/null
+++ b/youlai-auth/src/main/java/com/youlai/mall/auth/mapper/SysPermissionMapper.java
@@ -0,0 +1,22 @@
+package com.youlai.mall.auth.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.youlai.mall.auth.entity.SysPermission;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+@Mapper
+public interface SysPermissionMapper extends BaseMapper {
+
+ @Select("SELECT e.permission_id,e.permission_name, e.perms " +
+ " FROM sys_user a " +
+ " INNER JOIN sys_user_role b ON b.user_id = a.user_id " +
+ " INNER JOIN sys_role c ON c.role_id = b.role_id " +
+ " INNER JOIN sys_role_permission d ON d.role_id = c.role_id " +
+ " INNER JOIN sys_permission e ON e.permission_id = d.permission_id " +
+ " WHERE a.user_id =#{userId}")
+ List selectByUserId(Long userId);
+}
diff --git a/youlai-auth/src/main/java/com/youlai/mall/auth/mapper/SysUserMapper.java b/youlai-auth/src/main/java/com/youlai/mall/auth/mapper/SysUserMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..92cdca73d7fe28e726ca7057c9a0241154388a3d
--- /dev/null
+++ b/youlai-auth/src/main/java/com/youlai/mall/auth/mapper/SysUserMapper.java
@@ -0,0 +1,11 @@
+package com.youlai.mall.auth.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.youlai.mall.auth.entity.SysUser;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SysUserMapper extends BaseMapper {
+
+}
diff --git a/youlai-auth/src/main/java/com/youlai/mall/auth/service/ISysPermissionService.java b/youlai-auth/src/main/java/com/youlai/mall/auth/service/ISysPermissionService.java
new file mode 100644
index 0000000000000000000000000000000000000000..1043a194df665f841b07a327ecbeb8d3a96708aa
--- /dev/null
+++ b/youlai-auth/src/main/java/com/youlai/mall/auth/service/ISysPermissionService.java
@@ -0,0 +1,10 @@
+package com.youlai.mall.auth.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.youlai.mall.auth.entity.SysPermission;
+
+import java.util.List;
+
+public interface ISysPermissionService extends IService {
+ List getByUserId(Long userId);
+}
diff --git a/youlai-auth/src/main/java/com/youlai/mall/auth/service/ISysUserService.java b/youlai-auth/src/main/java/com/youlai/mall/auth/service/ISysUserService.java
new file mode 100644
index 0000000000000000000000000000000000000000..731fa8d75ab8d2c881cb7d0885805d9680af7bd5
--- /dev/null
+++ b/youlai-auth/src/main/java/com/youlai/mall/auth/service/ISysUserService.java
@@ -0,0 +1,8 @@
+package com.youlai.mall.auth.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.youlai.mall.auth.entity.SysUser;
+
+public interface ISysUserService extends IService {
+ SysUser getByUserName(String username);
+}
diff --git a/youlai-auth/src/main/java/com/youlai/mall/auth/service/impl/SysPermissionServiceImpl.java b/youlai-auth/src/main/java/com/youlai/mall/auth/service/impl/SysPermissionServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..7028c430676f3f93bb78bf1108eabdb5b9d72fa5
--- /dev/null
+++ b/youlai-auth/src/main/java/com/youlai/mall/auth/service/impl/SysPermissionServiceImpl.java
@@ -0,0 +1,17 @@
+package com.youlai.mall.auth.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.youlai.mall.auth.entity.SysPermission;
+import com.youlai.mall.auth.mapper.SysPermissionMapper;
+import com.youlai.mall.auth.service.ISysPermissionService;
+import org.springframework.stereotype.Service;
+import java.util.List;
+
+@Service
+public class SysPermissionServiceImpl extends ServiceImpl implements ISysPermissionService {
+
+ @Override
+ public List getByUserId(Long userId) {
+ return this.baseMapper.selectByUserId(userId);
+ }
+}
diff --git a/youlai-auth/src/main/java/com/youlai/mall/auth/service/impl/SysUserServiceImpl.java b/youlai-auth/src/main/java/com/youlai/mall/auth/service/impl/SysUserServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..cbe768cce27a1c3dac3927328b367cb746da4f5f
--- /dev/null
+++ b/youlai-auth/src/main/java/com/youlai/mall/auth/service/impl/SysUserServiceImpl.java
@@ -0,0 +1,18 @@
+package com.youlai.mall.auth.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.youlai.mall.auth.entity.SysUser;
+import com.youlai.mall.auth.mapper.SysUserMapper;
+import com.youlai.mall.auth.service.ISysUserService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SysUserServiceImpl extends ServiceImpl implements ISysUserService {
+
+ @Override
+ public SysUser getByUserName(String username) {
+ SysUser sysUser = this.baseMapper.selectOne(new LambdaQueryWrapper().eq(SysUser::getUserName, username));
+ return sysUser;
+ }
+}
diff --git a/youlai-auth/src/main/resources/bootstrap.yml b/youlai-auth/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000000000000000000000000000000000000..8aba15978dd385b47f5744c552fccd3da67aa2a9
--- /dev/null
+++ b/youlai-auth/src/main/resources/bootstrap.yml
@@ -0,0 +1,9 @@
+spring:
+ main:
+ allow-bean-definition-overriding: true
+ application:
+ name: yshop-auth
+ cloud:
+ config:
+ uri: http://101.37.69.49:8888
+ name: ${spring.application.name}
diff --git a/youlai-gateway/pom.xml b/youlai-gateway/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a1e57e32663f20b1e106243ae16fcac54e2e2d34
--- /dev/null
+++ b/youlai-gateway/pom.xml
@@ -0,0 +1,85 @@
+
+
+
+ yshop
+ com.fly4j
+ 1.0.0-SNAPSHOT
+
+ 4.0.0
+
+ yshop-gateway
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-eureka-server
+
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-zuul
+
+
+ org.springframework.cloud
+ spring-cloud-starter-config
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+ com.spotify
+ docker-maven-plugin
+ 1.0.0
+
+
+
+ build-image
+ package
+
+ build
+
+
+
+
+
+
+ ${docker.image.prefix}/${project.artifactId}
+
+
+ latest
+
+
+ java
+
+ ${docker.image.prefix}
+
+
+ /ROOT
+
+ ["java","-Djava.security.egd=file:/dev/./urandom","-jar","${project.build.finalName}.jar"]
+
+
+ https://fly4k:2376
+ C:\certs\docker\fly4k
+
+
+
+ /ROOT
+
+ ${project.build.directory}
+
+ ${project.build.finalName}.jar
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/youlai-gateway/src/main/resources/bootstrap-dev.yml b/youlai-gateway/src/main/resources/bootstrap-dev.yml
new file mode 100644
index 0000000000000000000000000000000000000000..29b0307e2151542616efaff85cedced080140402
--- /dev/null
+++ b/youlai-gateway/src/main/resources/bootstrap-dev.yml
@@ -0,0 +1,7 @@
+spring:
+ application:
+ name: yshop-gateway
+ cloud:
+ config:
+ uri: http://localhost:8888
+ name: ${spring.application.name}
diff --git a/youlai-gateway/src/main/resources/bootstrap-prod.yml b/youlai-gateway/src/main/resources/bootstrap-prod.yml
new file mode 100644
index 0000000000000000000000000000000000000000..c4ce0277d62b00dc382b113dedd41ce6d4b179ea
--- /dev/null
+++ b/youlai-gateway/src/main/resources/bootstrap-prod.yml
@@ -0,0 +1,7 @@
+spring:
+ application:
+ name: yshop-gateway
+ cloud:
+ config:
+ uri: http://101.37.69.49:8888
+ name: ${spring.application.name}
diff --git a/youlai-gateway/src/main/resources/bootstrap.yml b/youlai-gateway/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000000000000000000000000000000000000..2b97da3b36caedde2dbba2fafbeffd2c0a213112
--- /dev/null
+++ b/youlai-gateway/src/main/resources/bootstrap.yml
@@ -0,0 +1,9 @@
+spring:
+ application:
+ name: yshop-gateway
+ cloud:
+ config:
+ uri: http://101.37.69.49:8888
+ name: ${spring.application.name}
+ profiles:
+ active: dev