package com.jilongda.applet.controller;
import com.alibaba.fastjson.JSONObject;
import com.alipay.v3.ApiException;
import com.aliyuncs.exceptions.ClientException;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiUserGetuserinfoRequest;
import com.dingtalk.api.request.OapiV2UserGetRequest;
import com.dingtalk.api.response.OapiUserGetuserinfoResponse;
import com.dingtalk.api.response.OapiV2UserGetResponse;
import com.github.xiaoymin.knife4j.core.util.StrUtil;
import com.jilongda.applet.dto.*;
import com.jilongda.applet.model.SecUser;
import com.jilongda.applet.security.SecurityUserDetails;
import com.jilongda.applet.security.SysUserDetailsService;
import com.jilongda.applet.service.SecUserService;
import com.jilongda.applet.utils.ALiSendSms;
import com.jilongda.applet.utils.LoginInfoUtil;
import com.jilongda.applet.utils.dingding.DingTalkAccessTokenRequest;
import com.jilongda.common.basic.ApiResult;
import com.jilongda.common.basic.Constant;
import com.jilongda.common.exception.ServiceException;
import com.jilongda.common.log.OperLoginLog;
import com.jilongda.common.log.OperationLog;
import com.jilongda.common.msg.HuaweiCloudSMSUtil;
import com.jilongda.common.redis.RedisAutoTemplate;
import com.jilongda.common.security.SecurityUtils;
import com.jilongda.common.utils.WebUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
*
* 会员表 前端控制器
*
*
* @author xiaochen
* @since 2021-07-28
*/
@Slf4j
@Api(tags = "用户登录相关")
@RestController
@RequestMapping("/")
public class LoginController {
private final SecurityUtils securityUtils;
private final AuthenticationManager authenticationManager;
private final RedisAutoTemplate redisAutoTemplate;
private final HuaweiCloudSMSUtil msgUtils;
private final LoginInfoUtil loginInfoUtil;
private final SysUserDetailsService loadUserDetailsService;
@Autowired
private SecUserService secUserService;
@Autowired
private PasswordEncoder passwordEncoder;
@Autowired
public LoginController(SecurityUtils securityUtils, AuthenticationManager authenticationManager, RedisAutoTemplate redisAutoTemplate, HuaweiCloudSMSUtil msgUtils, LoginInfoUtil loginInfoUtil,SysUserDetailsService loadUserDetailsService) {
this.securityUtils = securityUtils;
this.authenticationManager = authenticationManager;
this.redisAutoTemplate = redisAutoTemplate;
this.msgUtils = msgUtils;
this.loginInfoUtil = loginInfoUtil;
this.loadUserDetailsService = loadUserDetailsService;
}
// @ApiOperation(value = "通过code获得openid")
// @GetMapping("openId-by-jscode2session/{code}")
// public ApiResult