diff --git a/api/pom.xml b/api/pom.xml index 5dbf5192..3ef124ab 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -47,7 +47,14 @@ spring-cloud-starter-gateway 4.0.0 - + + + com.alibaba.cloud + spring-cloud-starter-alibaba-sentinel + ${spring-cloud-alibaba.version} + + + diff --git a/api/src/main/java/com/qihang/api/TokenFilter.java b/api/src/main/java/com/qihang/api/TokenFilter.java index b3e2e55f..a06f9377 100644 --- a/api/src/main/java/com/qihang/api/TokenFilter.java +++ b/api/src/main/java/com/qihang/api/TokenFilter.java @@ -20,7 +20,10 @@ public class TokenFilter implements GlobalFilter, Ordered { System.out.println("Token:"+token); String url = exchange.getRequest().getURI().getPath(); System.out.println("intercept " + url); - + if(url.equals("/api/oms-api/login")){ + // 登录页面 放行 + return chain.filter(exchange); + } // TODO: 统一鉴权处理 if(!StringUtils.hasText(token)){ exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED); diff --git a/oms-api/src/main/java/com/qihang/oms/api/controller/HomeController.java b/oms-api/src/main/java/com/qihang/oms/api/controller/HomeController.java index afc0bebb..96f3e9ea 100644 --- a/oms-api/src/main/java/com/qihang/oms/api/controller/HomeController.java +++ b/oms-api/src/main/java/com/qihang/oms/api/controller/HomeController.java @@ -18,7 +18,10 @@ public class HomeController { private RedisTemplate redisTemplate; @Resource private EchoService echoService; - + @GetMapping("/") + public String home(){ + return "{'code':0,'msg':'请通过api访问'}"; + } @GetMapping(value = "/echo-rest") public String rest() { return restTemplate.getForObject("http://tao-oms/test/na", String.class); @@ -28,8 +31,4 @@ public class HomeController { return echoService.echo(); } - @GetMapping(value = "/home") - public String home(){ - return "home"; - } } diff --git a/oms-api/src/main/java/com/qihang/oms/api/controller/LoginController.java b/oms-api/src/main/java/com/qihang/oms/api/controller/LoginController.java index c4f62bfc..16a92919 100644 --- a/oms-api/src/main/java/com/qihang/oms/api/controller/LoginController.java +++ b/oms-api/src/main/java/com/qihang/oms/api/controller/LoginController.java @@ -9,6 +9,9 @@ import com.qihang.oms.api.service.SysLoginService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.HashMap; +import java.util.Map; + @RestController public class LoginController { @Autowired @@ -17,12 +20,18 @@ public class LoginController { private ISysUserService userService; @PostMapping(value = "/login") public AjaxResult login(@RequestBody LoginBody loginBody){ - AjaxResult ajax = AjaxResult.success(); +// AjaxResult ajax = // SysUser user = userService.selectUserByUserName(loginBody.getUsername()); // 生成令牌 String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), loginBody.getUuid()); - ajax.put(Constants.TOKEN, token); - return ajax; +// ajax.put(Constants.TOKEN, token); + Map map = new HashMap<>(); + map.put("accessToken", token); + map.put("tokenType","Bearer"); + return AjaxResult.success(map); } + + //logout + } diff --git a/oms-api/src/main/java/com/qihang/oms/api/controller/MenusController.java b/oms-api/src/main/java/com/qihang/oms/api/controller/MenusController.java new file mode 100644 index 00000000..abdf435e --- /dev/null +++ b/oms-api/src/main/java/com/qihang/oms/api/controller/MenusController.java @@ -0,0 +1,49 @@ +package com.qihang.oms.api.controller; + +import com.qihang.oms.api.common.AjaxResult; +import com.qihang.oms.api.domain.vo.MenusDetailVo; +import com.qihang.oms.api.domain.vo.MenusVo; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; + +@RequestMapping("/menus") +@RestController +public class MenusController { + + @GetMapping(value = "/routes") + public AjaxResult list() { + List vo = new ArrayList<>(); + MenusVo m1 = new MenusVo(); + m1.setPath("/system"); + m1.setComponent("Layout"); + m1.setRedirect("/system/user"); + m1.setName("/system"); + MenusDetailVo meta1 = new MenusDetailVo(); + meta1.setTitle("系统管理"); + meta1.setIcon("system"); + meta1.setHidden(false); + meta1.setRoles(new String[]{"ADMIN", "ADMIN6"}); + m1.setMeta(meta1); + + List m1Ch = new ArrayList<>(); + MenusVo m1ch1 = new MenusVo(); + m1ch1.setPath("/user"); + m1ch1.setComponent("system/user/index"); + m1ch1.setName("User"); + MenusDetailVo meta11 = new MenusDetailVo(); + meta11.setTitle("用户管理"); + meta11.setIcon("user"); + meta11.setHidden(false); + meta11.setRoles(new String[]{"ADMIN", "GUEST"}); + meta11.setKeepAlive(true); + m1ch1.setMeta(meta11); + m1Ch.add(m1ch1); + m1.setChildren(m1Ch); + vo.add(m1); + return AjaxResult.success(vo); + } +} diff --git a/oms-api/src/main/java/com/qihang/oms/api/controller/UsersController.java b/oms-api/src/main/java/com/qihang/oms/api/controller/UsersController.java new file mode 100644 index 00000000..2e63cb01 --- /dev/null +++ b/oms-api/src/main/java/com/qihang/oms/api/controller/UsersController.java @@ -0,0 +1,48 @@ +package com.qihang.oms.api.controller; + +import com.qihang.oms.api.common.AjaxResult; +import com.qihang.oms.api.domain.vo.UserInfoVo; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; + +@RequestMapping("/users") +@RestController +public class UsersController { + + @GetMapping(value = "/me") + public AjaxResult me() { + UserInfoVo vo = new UserInfoVo(); + vo.setUserId(2); + vo.setUsername("admin"); + vo.setNickname("系统管理员"); + vo.setAvatar("https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif"); + vo.setRoles(new String[]{"ADMIN"}); + List perms = new ArrayList<>(); + perms.add("sys:menu:delete"); + perms.add("sys:dept:edit"); + perms.add("sys:dict_type:add"); + perms.add("sys:dict:edit"); + perms.add("sys:dict:delete"); + perms.add("sys:dict_type:edit"); + perms.add("sys:menu:add"); + perms.add("sys:user:add"); + perms.add("sys:role:edit"); + perms.add("sys:dept:delete"); + perms.add("sys:user:password_reset"); + perms.add("sys:user:edit"); + perms.add("sys:user:delete"); + perms.add("sys:dept:add"); + perms.add("sys:role:delete"); + perms.add("sys:dict_type:delete"); + perms.add("sys:menu:edit"); + perms.add("sys:dict:add"); + perms.add("sys:role:add"); + vo.setPerms(perms); + return AjaxResult.success(vo); + } +} diff --git a/oms-api/src/main/java/com/qihang/oms/api/domain/vo/MenusDetailVo.java b/oms-api/src/main/java/com/qihang/oms/api/domain/vo/MenusDetailVo.java new file mode 100644 index 00000000..0a49964f --- /dev/null +++ b/oms-api/src/main/java/com/qihang/oms/api/domain/vo/MenusDetailVo.java @@ -0,0 +1,51 @@ +package com.qihang.oms.api.domain.vo; + +import java.util.List; + +public class MenusDetailVo { + private String title; + private String icon; + private Boolean hidden; + private String[] roles; + private Boolean keepAlive; + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getIcon() { + return icon; + } + + public void setIcon(String icon) { + this.icon = icon; + } + + public Boolean getHidden() { + return hidden; + } + + public void setHidden(Boolean hidden) { + this.hidden = hidden; + } + + public String[] getRoles() { + return roles; + } + + public void setRoles(String[] roles) { + this.roles = roles; + } + + public Boolean getKeepAlive() { + return keepAlive; + } + + public void setKeepAlive(Boolean keepAlive) { + this.keepAlive = keepAlive; + } +} diff --git a/oms-api/src/main/java/com/qihang/oms/api/domain/vo/MenusVo.java b/oms-api/src/main/java/com/qihang/oms/api/domain/vo/MenusVo.java new file mode 100644 index 00000000..05e33ef4 --- /dev/null +++ b/oms-api/src/main/java/com/qihang/oms/api/domain/vo/MenusVo.java @@ -0,0 +1,60 @@ +package com.qihang.oms.api.domain.vo; + +import java.util.List; + +public class MenusVo { + private String path; + private String component; + private String redirect; + private String name; + private MenusDetailVo meta; + private List children; + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public String getComponent() { + return component; + } + + public void setComponent(String component) { + this.component = component; + } + + public String getRedirect() { + return redirect; + } + + public void setRedirect(String redirect) { + this.redirect = redirect; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public MenusDetailVo getMeta() { + return meta; + } + + public void setMeta(MenusDetailVo meta) { + this.meta = meta; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } +} diff --git a/oms-api/src/main/java/com/qihang/oms/api/domain/vo/UserInfoVo.java b/oms-api/src/main/java/com/qihang/oms/api/domain/vo/UserInfoVo.java new file mode 100644 index 00000000..31795560 --- /dev/null +++ b/oms-api/src/main/java/com/qihang/oms/api/domain/vo/UserInfoVo.java @@ -0,0 +1,60 @@ +package com.qihang.oms.api.domain.vo; + +import java.util.List; + +public class UserInfoVo { + private Integer userId; + private String username; + private String nickname; + private String avatar; + private String[] roles; + private List perms; + + public Integer getUserId() { + return userId; + } + + public void setUserId(Integer userId) { + this.userId = userId; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getNickname() { + return nickname; + } + + public void setNickname(String nickname) { + this.nickname = nickname; + } + + public String getAvatar() { + return avatar; + } + + public void setAvatar(String avatar) { + this.avatar = avatar; + } + + public String[] getRoles() { + return roles; + } + + public void setRoles(String[] roles) { + this.roles = roles; + } + + public List getPerms() { + return perms; + } + + public void setPerms(List perms) { + this.perms = perms; + } +} diff --git a/oms-api/src/main/java/com/qihang/oms/api/security/JwtAuthenticationTokenFilter.java b/oms-api/src/main/java/com/qihang/oms/api/security/JwtAuthenticationTokenFilter.java index 2ac1fcc7..c8f773f4 100644 --- a/oms-api/src/main/java/com/qihang/oms/api/security/JwtAuthenticationTokenFilter.java +++ b/oms-api/src/main/java/com/qihang/oms/api/security/JwtAuthenticationTokenFilter.java @@ -45,8 +45,8 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter { // String token = exchange.getRequest().getHeaders().getFirst(TOKEN_HEADER); String token = request.getHeader("Authorization"); - - log.info("intercept " + request.getRequestURI()); + String url =request.getRequestURI(); + log.info("intercept " + url); log.info("token: " + token); if(request.getRequestURI().equals("/login")){ // 登录页面,放行 diff --git a/tao-api/src/main/java/com/qihang/tao/controller/HomeController.java b/tao-api/src/main/java/com/qihang/tao/controller/HomeController.java index be7a5789..42dd5540 100644 --- a/tao-api/src/main/java/com/qihang/tao/controller/HomeController.java +++ b/tao-api/src/main/java/com/qihang/tao/controller/HomeController.java @@ -8,9 +8,9 @@ import org.springframework.web.bind.annotation.RestController; @RestController public class HomeController { - @GetMapping("/test/22") + @GetMapping("/") public String home(){ - return "hello world"; + return "{'code':0,'msg':'请通过api访问'}"; } @Value(value = "${zhijian.name:1}") diff --git a/vue3/src/api/auth/index.ts b/vue3/src/api/auth/index.ts index 645628e1..a17654a7 100644 --- a/vue3/src/api/auth/index.ts +++ b/vue3/src/api/auth/index.ts @@ -15,11 +15,11 @@ export function loginApi(data: LoginData): AxiosPromise { formData.append("captchaKey", data.captchaKey || ""); formData.append("captchaCode", data.captchaCode || ""); return request({ - url: "/api/v1/auth/login", + url: "/api/oms-api/login", method: "post", data: formData, headers: { - "Content-Type": "multipart/form-data", + // "Content-Type": "multipart/form-data", }, }); } @@ -29,7 +29,7 @@ export function loginApi(data: LoginData): AxiosPromise { */ export function logoutApi() { return request({ - url: "/api/v1/auth/logout", + url: "/api/oms-api/logout", method: "delete", }); } diff --git a/vue3/src/api/menu/index.ts b/vue3/src/api/menu/index.ts index 032e0a91..f531c08c 100644 --- a/vue3/src/api/menu/index.ts +++ b/vue3/src/api/menu/index.ts @@ -7,7 +7,7 @@ import { MenuQuery, MenuVO, MenuForm } from "./types"; */ export function listRoutes() { return request({ - url: "/api/v1/menus/routes", + url: "/api/oms-api/menus/routes", method: "get", }); } diff --git a/vue3/src/api/user/index.ts b/vue3/src/api/user/index.ts index 3c7087a0..9d3e4612 100644 --- a/vue3/src/api/user/index.ts +++ b/vue3/src/api/user/index.ts @@ -7,7 +7,7 @@ import { UserForm, UserInfo, UserPageVO, UserQuery } from "./types"; */ export function getUserInfoApi(): AxiosPromise { return request({ - url: "/api/v1/users/me", + url: "/api/oms-api/users/me", method: "get", }); } diff --git a/vue3/src/utils/request.ts b/vue3/src/utils/request.ts index d5277513..92945321 100644 --- a/vue3/src/utils/request.ts +++ b/vue3/src/utils/request.ts @@ -26,7 +26,7 @@ service.interceptors.request.use( service.interceptors.response.use( (response: AxiosResponse) => { const { code, msg } = response.data; - if (code === "00000") { + if (code === "200" || code === 200) { return response.data; } // 响应数据为二进制流处理(Excel导出) diff --git a/vue3/src/views/login/index.vue b/vue3/src/views/login/index.vue index b5d20ae4..6b0d6252 100644 --- a/vue3/src/views/login/index.vue +++ b/vue3/src/views/login/index.vue @@ -121,7 +121,7 @@ v-show="useAppStore().device == 'desktop'" >

- Copyright © 2021 - 2024 youlai.tech All Rights Reserved. 启航电商 + Copyright © 2021 - 2024 qihangec.tech All Rights Reserved. 启航电商 版权所有

皖ICP备20006496号-3

@@ -261,6 +261,7 @@ function handleLogin() { userStore .login(loginData.value) .then(() => { + console.log("登录成功") const query: LocationQuery = route.query; const redirect = (query.redirect as LocationQueryValue) ?? "/"; @@ -277,9 +278,10 @@ function handleLogin() { router.push({ path: redirect, query: otherQueryParams }); }) - .catch(() => { + .catch((res) => { + console.log("登录失败",res) // 验证失败,重新生成验证码 - getCaptcha(); + // getCaptcha(); }) .finally(() => { loading.value = false;