package com.sf.admin.controller;
import com.sf.admin.dto.CommonResult;
import com.sf.admin.dto.req.AdminLoginReqDto;
import com.sf.admin.dto.resp.AdminInfoRespDto;
import com.sf.admin.dto.resp.AdminLoginRespDto;
import com.sf.admin.dto.resp.UmsMenuRespDto;
import com.sf.admin.entity.UmsAdmin;
import com.sf.admin.entity.UmsDept;
import com.sf.admin.entity.UmsMenu;
import com.sf.admin.entity.UmsRole;
import com.sf.admin.service.*;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
/**
*
* 后台用户表 前端控制器
*
*
* @author baomidou
* @since 2024-08-12
*/
@RestController
@RequiredArgsConstructor
public class UmsAdminController {
private final IUmsAdminService umsAdminService;
private final IUmsDeptService umsDeptService;
private final IUmsMenuService umsMenuService;
private final IUmsAdminRoleRelationService adminRoleRelationService;
private final IUmsRoleMenuRelationService roleMenuRelationService;
// http://localhost:8013/ums/admin/list
// @GetMapping("/ums/admin/list")
// public List list(){
// return umsAdminService.list();
// }
@PostMapping("/admin/login")
public CommonResult login(@RequestBody AdminLoginReqDto loginReqDto) {
String logined = umsAdminService.login(loginReqDto);
if (logined == null) {
return CommonResult.failed("用户名或密码错误");
}
AdminLoginRespDto adminLoginRespDto = AdminLoginRespDto.builder()
.token(logined).tokenHead("SFCC ").build();
return CommonResult.success(adminLoginRespDto);
}
@GetMapping("/admin/info")
public CommonResult getAdminInfo(@RequestHeader("Authorization") String token) {
if (token == null) {
return CommonResult.unauthorized(null);
}
// 获取用户id
// token = "SFCC token_3"
String id = token.substring(11);
// 获取用户信息
UmsAdmin umsAdmin = umsAdminService.getById(Long.parseLong(id));
// 获取用户对应的部门信息
// ums_admin表中的dept_id 对应 ums_dept表中的id
UmsDept umsDept = umsDeptService.getById(umsAdmin.getDeptId());
// 获取用户对应的角色信息
List roleList = adminRoleRelationService.getRolesByUserId(umsAdmin.getId());
String[] roles = new String[roleList.size()];
for (int i = 0; i < roleList.size(); i++) {
roles[i] = roleList.get(i).getName();
}
// 获取角色所对应的菜单信息
List roleIds = new ArrayList<>();
for (UmsRole umsRole : roleList) {
roleIds.add(umsRole.getId());
}
List menuIds = roleMenuRelationService.queryMenusByRoleId(roleIds);
List menus = umsMenuService.getMenuInfoByIds(menuIds);
// List menuList = umsMenuService.getMenuList(Long.parseLong(id));
// List list = menuList.stream().map(umsMenu -> {
// UmsMenuRespDto umsMenuRespDto = new UmsMenuRespDto();
// BeanUtils.copyProperties(umsMenu, umsMenuRespDto);
// return umsMenuRespDto;
// }).toList();
AdminInfoRespDto adminInfoRespDto = AdminInfoRespDto.builder()
.username(umsAdmin.getUsername())
.id(umsAdmin.getId())
.code(umsAdmin.getCode())
.exNum(umsAdmin.getExNum())
.nickName(umsAdmin.getNickName())
.headImg(umsAdmin.getHeadImg())
.deptName(umsDept.getDeptName())
.roles(roles)
.menus(menus)
.build();
return CommonResult.success(adminInfoRespDto);
}
}