package com.bjsxt.web.controller;

import com.bjsxt.exception.UserException;
import com.bjsxt.pojo.Funs;
import com.bjsxt.pojo.Users;
import com.bjsxt.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.UnsupportedEncodingException;
import java.util.List;

/**
 * 用户登录处理器
 */
@Controller
public class LoginController {

    // 注入业务层
    @Autowired
    private UserService userService;

    /**
     *  处理用户登录的请求
     */
    @RequestMapping("/userLogin")
    public String userLogin(Users users, Model model, HttpServletRequest request){
        // 根据自定义异常来决定跳转的页面，出现异常返回登录页面，登录成功跳转首页
        try {
            // 解决数据库中有中文数据，在页面输入中文后查询不到数据
            String s = new String(users.getUsername().getBytes("iso-8859-1"),"utf-8");
            // 根据传入的Users获取username和userpwd登录
            Users u = this.userService.userLogin(s,users.getUserpwd());
            // 获取HttpSession
            HttpSession session = request.getSession();
            // 将登录后返回的Users对象放到HttpSession中
            session.setAttribute("user",u);
        }catch (UserException | UnsupportedEncodingException e){
            // 打印异常信息
            e.printStackTrace();
            // 跳转页面，并将错误信息传递到页面
            model.addAttribute("msg",e.getMessage());
            // 请求转发跳转页面  Spring默认的就是使用请求转发的方式
            return "login";
        }
        // 跳转到首页。重定向跳转
        return "redirect:index";
    }
}
