package com.ruoyi.web.controller.system; 
 | 
  
 | 
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; 
 | 
import com.ruoyi.common.annotation.Log; 
 | 
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.core.domain.model.LoginBodyByOpenID; 
 | 
import com.ruoyi.common.core.domain.model.LoginUser; 
 | 
import com.ruoyi.common.core.domain.model.ThirdLoginBody; 
 | 
import com.ruoyi.common.enums.BusinessType; 
 | 
import com.ruoyi.common.utils.SecurityUtils; 
 | 
import com.ruoyi.common.utils.StringUtils; 
 | 
import com.ruoyi.framework.web.service.SysLoginService; 
 | 
import com.ruoyi.framework.web.service.SysPermissionService; 
 | 
import com.ruoyi.project.service.DingTalkService; 
 | 
import com.ruoyi.system.service.ISysMenuService; 
 | 
import io.swagger.annotations.Api; 
 | 
import io.swagger.annotations.ApiImplicitParam; 
 | 
import io.swagger.annotations.ApiOperation; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.web.bind.annotation.GetMapping; 
 | 
import org.springframework.web.bind.annotation.PostMapping; 
 | 
import org.springframework.web.bind.annotation.RequestBody; 
 | 
import org.springframework.web.bind.annotation.RestController; 
 | 
  
 | 
import java.util.HashMap; 
 | 
import java.util.List; 
 | 
import java.util.Map; 
 | 
import java.util.Set; 
 | 
  
 | 
/** 
 | 
 * 登录验证 
 | 
 * 
 | 
 * @author ruoyi 
 | 
 */ 
 | 
@Slf4j 
 | 
@Api("用户登录") 
 | 
@RestController 
 | 
public class SysLoginController { 
 | 
    @Autowired 
 | 
    private SysLoginService loginService; 
 | 
  
 | 
    @Autowired 
 | 
    private ISysMenuService menuService; 
 | 
  
 | 
    @Autowired 
 | 
    private SysPermissionService permissionService; 
 | 
  
 | 
    @Autowired 
 | 
    private DingTalkService dingTalkService; 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 微信OpenID登录方法 
 | 
     * 
 | 
     * @param 
 | 
     * @return 结果 
 | 
     */ 
 | 
    @ApiOperation("微信OpenID登录") 
 | 
    @ApiImplicitParam(name = "loginBody", value = "登录信息", dataType = "LoginBodyByOpenID") 
 | 
    @PostMapping("/openidlogin") 
 | 
    public AjaxResult openidLogin(@RequestBody LoginBodyByOpenID loginBody) { 
 | 
        String openid = loginBody.getOpenid(); 
 | 
        AjaxResult ajax = loginService.wxopenidLogin(openid); 
 | 
        return ajax; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 第三方获取token   :这里的password对应的是sys_user表里的ding_user_id 
 | 
     * 
 | 
     * @param thirdLoginBody 
 | 
     * @return 
 | 
     */ 
 | 
    @PostMapping("/getToken") 
 | 
    public AjaxResult openidLogin(@RequestBody ThirdLoginBody thirdLoginBody) { 
 | 
//        AjaxResult ajax = AjaxResult.success(); 
 | 
        String token = loginService.getToken(thirdLoginBody.getUserName(), thirdLoginBody.getPassWord()); 
 | 
       Map<String,String> map=new HashMap<>(); 
 | 
       map.put("token",token); 
 | 
        return AjaxResult.success(map); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 登录方法 
 | 
     * 
 | 
     * @param loginBody 登录信息 
 | 
     * @return 结果 
 | 
     */ 
 | 
    @ApiOperation("登录信息") 
 | 
    @Log(title = "登录信息", businessType = BusinessType.OTHER) 
 | 
    @PostMapping("/login") 
 | 
    public AjaxResult login(@RequestBody LoginBody loginBody) { 
 | 
        log.info("loginBody的入参是:{}", loginBody); 
 | 
        AjaxResult ajax = AjaxResult.success(); 
 | 
//        dingTalkService.deptidList(1L, 1); 
 | 
        Map<String, Object> userIdMap = null; 
 | 
        if (StringUtils.isNotEmpty(loginBody.getAuthCode())) { 
 | 
            Map<String, Object> map = dingTalkService.noLogin(loginBody.getAuthCode()); 
 | 
            userIdMap = (Map<String, Object>) map.get("result"); 
 | 
        } 
 | 
        log.info("userIdMap的值为:{}", userIdMap); 
 | 
        // 生成令牌 
 | 
        String token = null; 
 | 
        if (!ObjectUtils.isEmpty(userIdMap)) { 
 | 
            token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), loginBody.getUuid(), loginBody.getOpenid(), userIdMap.get("userid").toString()); 
 | 
        } else { 
 | 
            token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), loginBody.getUuid(), loginBody.getOpenid(), null); 
 | 
        } 
 | 
  
 | 
        ajax.put(Constants.TOKEN, token); 
 | 
        return ajax; 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 获取用户信息 
 | 
     * 
 | 
     * @return 用户信息 
 | 
     */ 
 | 
    @GetMapping("getInfo") 
 | 
    public AjaxResult getInfo() { 
 | 
        SysUser user = SecurityUtils.getLoginUser().getUser(); 
 | 
        // 角色集合 
 | 
        Set<String> roles = permissionService.getRolePermission(user); 
 | 
        // 权限集合 
 | 
        Set<String> permissions = permissionService.getMenuPermission(user); 
 | 
  
 | 
  
 | 
        AjaxResult ajax = AjaxResult.success(); 
 | 
        ajax.put("user", user); 
 | 
        ajax.put("roles", roles); 
 | 
        ajax.put("permissions", permissions); 
 | 
        return ajax; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取路由信息 
 | 
     * /addOrUpdateRBpayee/addOrUpdateRBpayee/addOrUpdateRBpayee 
 | 
     * 
 | 
     * @return 路由信息 
 | 
     */ 
 | 
    @GetMapping("getRouters") 
 | 
    public AjaxResult getRouters() { 
 | 
        Long userId = SecurityUtils.getUserId(); 
 | 
        List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId); 
 | 
        return AjaxResult.success(menuService.buildMenus(menus)); 
 | 
    } 
 | 
} 
 |