package com.kiisoo.ic.login.controller; import com.kiisoo.ic.common.BaseController; import com.kiisoo.ic.login.bean.LoginBean; import com.kiisoo.ic.login.enums.LoginEnum; import com.kiisoo.ic.login.service.LoginService; import com.kiisoo.ic.wx.service.QWMailListManageService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.subject.Subject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpSession; import java.util.HashMap; import java.util.Map; import static com.kiisoo.ic.constants.Constants.ERROR_ACCOUNT_NOT_BIND; /** * @Description: 用户登入 * @Author: wangyinjia * @Date: 2020/2/18 * @Company: kiisoo * @Version: 1.0 */ @Controller @Slf4j public class LoginController extends BaseController { /** * 登录 service */ private final LoginService loginService; @Autowired public LoginController(LoginService loginService) { this.loginService = loginService; } /** * 登录账号 * @param login 用户名 * @param password 密码 * @return 成功/失败 */ @RequestMapping(value = "/login",method = RequestMethod.GET) @ResponseBody public Map loginAccount(@RequestParam(value = "login")String login, @RequestParam(value = "password")String password, @RequestParam(value = "isMD5",required = false,defaultValue = "false")Boolean isMD5){ try{ Map resultMap = new HashMap<>(); LoginBean loginBean = loginService.login(login, password,isMD5); resultMap.put("code", loginBean.getLoginInfo().get("code")); resultMap.put("results", loginBean); resultMap.put("success", Boolean.TRUE); return resultMap; }catch (Exception e){ log.error("登录失败", e); return fail(); } } /** * 小程序登录账号 * @param login 用户名 * @param password 密码 * @return 成功/失败 */ @RequestMapping(value = "/mini/login",method = RequestMethod.GET) @ResponseBody public Map miniLoginAccount(@RequestParam(value = "login")String login, @RequestParam(value = "password")String password, @RequestParam(value = "isMD5",required = false,defaultValue = "false")Boolean isMD5){ try{ Map resultMap = new HashMap<>(); LoginBean loginBean = loginService.miniLogin(login, password,isMD5); resultMap.put("code", loginBean.getLoginInfo().get("code")); resultMap.put("results", loginBean); resultMap.put("success", Boolean.TRUE); return resultMap; }catch (Exception e){ log.error("登录失败", e); return fail(); } } /** * 登录账号 * @param code * @return 成功/失败 */ @RequestMapping(value = "/qy/mini/login",method = RequestMethod.GET) @ResponseBody public Map qyMiniAutoLogin(@RequestParam(value = "code")String code){ try{ Map resultMap = new HashMap<>(); Map accountInfo = loginService.qyMiniAutoLogin(code); if (accountInfo!=null){ if (StringUtils.isNotBlank(accountInfo.get("login")) && StringUtils.isNotBlank(accountInfo.get("password"))){ LoginBean loginBean = loginService.miniLogin(accountInfo.get("login"), accountInfo.get("password"), false); resultMap.put("code", loginBean.getLoginInfo().get("code")); resultMap.put("results", loginBean); }else{ if (StringUtils.isNotBlank(accountInfo.get("cpUserId"))){ String cpUserId = accountInfo.get("cpUserId"); resultMap.put("code", ERROR_ACCOUNT_NOT_BIND); LoginBean loginBean = new LoginBean(ERROR_ACCOUNT_NOT_BIND); loginBean.setLogin(cpUserId); resultMap.put("results", loginBean); } } } resultMap.put("success", Boolean.TRUE); return resultMap; }catch (Exception e){ log.error("登录失败", e); return fail(); } } /** * 登录账号 * @param login 用户名 * @param password 密码 * @param qywxUserId 企业微信账号 * @return 成功/失败 */ @RequestMapping(value = "/login/bind",method = RequestMethod.GET) @ResponseBody public Map loginAccountBind(@RequestParam("login")String login, @RequestParam("password")String password, @RequestParam("cpUserId")String qywxUserId){ try{ Map resultMap = new HashMap<>(); LoginBean loginBean = loginService.miniLogin(login, password,false); resultMap.put("code", loginBean.getLoginInfo().get("code")); if (LoginEnum.LOGIN_SUCCEED.getCode().equals(loginBean.getLoginInfo().get("code"))){ loginService.bindQywxUserIdByUserId(loginBean.getUserId(),qywxUserId); } resultMap.put("results", loginBean); resultMap.put("success", Boolean.TRUE); return resultMap; }catch (Exception e){ log.error("登录失败", e); return fail(); } } /** * 登出 * @param session 用户会话 * @return string */ @RequestMapping("/logout") public String logOut(HttpSession session) { Subject subject = SecurityUtils.getSubject(); subject.logout(); return "login"; } }