8fbd916e22e15bde0a711727354f3a58dc157dcf
[institute/sw-backend.git] /
1 package com.supwisdom.institute.backend.admin.bff.apis.controller.me;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6
7 import io.swagger.annotations.Api;
8 import io.swagger.annotations.ApiOperation;
9
10
11 import org.springframework.beans.factory.annotation.Autowired;
12 import org.springframework.util.MimeTypeUtils;
13 import org.springframework.web.bind.annotation.RequestMapping;
14 import org.springframework.web.bind.annotation.RequestMethod;
15 import org.springframework.web.bind.annotation.RestController;
16
17
18 import com.supwisdom.institute.backend.admin.bff.apis.model.base.Permission;
19 import com.supwisdom.institute.backend.admin.bff.apis.model.me.CurrentUser;
20 import com.supwisdom.institute.backend.admin.bff.apis.model.me.GrantedMenu;
21 import com.supwisdom.institute.backend.admin.bff.apis.service.base.AuthnAccountService;
22 import com.supwisdom.institute.backend.admin.bff.apis.vo.me.response.data.CurrentUserResponseData;
23 import com.supwisdom.institute.backend.admin.bff.apis.vo.me.response.data.GrantedMenusResponseData;
24 import com.supwisdom.institute.backend.admin.bff.utils.CurrentUserUtil;
25 import com.supwisdom.institute.backend.common.core.transmit.user.User;
26 import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
27 import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
28
29
30 @Api(value = "BFFMe", tags = { "me" }, description = "登录用户相关信息的接口")
31 @RestController
32 @RequestMapping(value = "/v1/me")
33 public class MeController {
34   
35   @Autowired
36   private AuthnAccountService authnAccountService;
37   
38   @ApiOperation(
39       tags = { "me" },
40       value = "获取登录用户的基本信息", notes = "获取登录用户的基本信息", nickname = "user"
41   )
42   @RequestMapping(method = RequestMethod.GET, path = "/user", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
43   public DefaultApiResponse<CurrentUserResponseData> user() {
44     
45     User user = CurrentUserUtil.currentUser();
46     
47     CurrentUser cu = new CurrentUser();
48     cu.setUsername(user.getUsername());
49     cu.setRoles(user.getRoles());
50     cu.setAttributes(user.getAttributes());
51     
52     // XXX: 如果需要放入其他信息,可以扩展CurrentUser,并从服务接口中获取后写入数据
53     
54     CurrentUserResponseData data = CurrentUserResponseData.of(cu);
55     return new DefaultApiResponse<CurrentUserResponseData>(data);
56   }
57   
58   @ApiOperation(
59       tags = { "me" },
60       value = "获取登录用户的访问菜单", notes = "获取登录用户的访问菜单", nickname = "menus"
61   )
62   @RequestMapping(method = RequestMethod.GET, path = "/menus", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
63   public DefaultApiResponse<GrantedMenusResponseData> menus() {
64     
65     String username = CurrentUserUtil.currentUsername();
66     
67     List<Permission> menus =  authnAccountService.menus(username, "1");
68     
69     List<GrantedMenu> grantedMenus = new ArrayList<>();
70     
71     menus.forEach(m -> {
72       GrantedMenu grantedMenu = new GrantedMenu();
73       grantedMenu = EntityUtils.copy(m, grantedMenu);
74       grantedMenus.add(grantedMenu);
75     });
76     
77     GrantedMenusResponseData data = GrantedMenusResponseData.of(grantedMenus);
78     return new DefaultApiResponse<GrantedMenusResponseData>(data);
79     
80   }
81   
82 }