package com.ruoyi.web.controller.system; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.temporal.ChronoUnit; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Set; import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.framework.web.domain.server.Sys; import com.ruoyi.system.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysMenu; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginBody; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.framework.web.service.SysLoginService; import com.ruoyi.framework.web.service.SysPermissionService; import com.ruoyi.system.service.ISysMenuService; /** * 登录验证 * * @author ruoyi */ @RestController public class SysLoginController { @Autowired private SysLoginService loginService; @Autowired private ISysMenuService menuService; @Autowired private SysPermissionService permissionService; @Autowired private ISysUserService userService; /** * 登录方法 * * @param loginBody 登录信息 * @return 结果 */ @PostMapping("/login") public AjaxResult login(@RequestBody LoginBody loginBody) { // 生成令牌 System.out.println(loginBody); String token = loginService.login(loginBody.getNickname(), loginBody.getPassword(), loginBody.getCode(), loginBody.getUuid()); HashMap tokenMap = new HashMap<>(); tokenMap.put("token",token); // tokenMap.put("roid",roid) return AjaxResult.success(tokenMap); } /** * 登录方法(不需要验证码) * * @param loginBody 登录信息 * @return 结果 */ @PostMapping("/login/no") public AjaxResult login2(@RequestBody LoginBody loginBody) { // 生成令牌 String token = loginService.loginWithoutValidate(loginBody.getUsername(), loginBody.getPassword()); HashMap tokenMap = new HashMap<>(); tokenMap.put("token",token); return AjaxResult.success(tokenMap); } /** * 获取用户当前剩余的试用天数 */ @GetMapping("/leave") public AjaxResult getUserLeave(){ Long userId = SecurityUtils.getUserId(); SysUser sysUser = userService.selectUserById(userId); if(sysUser.getPaid()!=null&&sysUser.getPaid()==0) { Date startTime = sysUser.getCreateTime(); // 安全转换 Instant instant = startTime.toInstant(); LocalDateTime startDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime(); long daysPassed = ChronoUnit.DAYS.between(startDateTime, LocalDateTime.now()); return AjaxResult.success("试用提醒:您还有 " + (7L - daysPassed) + " 天的试用天数"); }else return AjaxResult.success("尊敬的会员用户,您好!欢迎来到本嘟嘟家网"); } /** * 管理员授予会员 */ @GetMapping("/member/{userId}") public AjaxResult setMember(@PathVariable("userId") Long userId){ SysUser sysUser = userService.selectUserById(userId); sysUser.setStatus("0"); sysUser.setPaid(1); System.out.println("[{{{{{"+sysUser); userService.updateUser(sysUser); return AjaxResult.success(sysUser.getUserName() + " 用户已成为会员"); } /** * 获取用户信息 * * @return 用户信息 */ @GetMapping("getInfo") public AjaxResult getInfo() { SysUser user = SecurityUtils.getLoginUser().getUser(); // System.out.println(user); // System.out.println("===========0oiii999999999999999-000000000000000000"); // 角色集合 Set roles = permissionService.getRolePermission(user); // 权限集合 Set permissions = permissionService.getMenuPermission(user); System.out.println(permissions); AjaxResult ajax = AjaxResult.success(); ajax.put("user", user); ajax.put("roles", roles); ajax.put("permissions", permissions); return ajax; } /** * 获取路由信息 * * @return 路由信息 */ @GetMapping("getRouters") public AjaxResult getRouters() { Long userId = SecurityUtils.getUserId(); System.out.println("9222222222kkkkkkkkkkksssssssssssssssssss"); List menus = menuService.selectMenuTreeByUserId(userId);//这里之后已经生成了树形结构 System.out.println(menus); return AjaxResult.success(menuService.buildMenus(menus));//这里之后就封装好了发给前端的vo } }