package com.malk.mcli.test;

import com.alibaba.fastjson.JSON;
import com.malk.repository.dao.primary.McAuthorizationDao;
import com.malk.server.common.McR;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Profile;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

/**
 * JSP在SpringBoot内运行
 * -
 * 1. 在 file - project structure - facets 下, 添加web以及对应的路径. 注意 web2.xml 直接添加, 完成后将 webapp 文件夹移动到 src/main 下面
 * 2. 添加依赖, 注意 tomcat-embed-jasper 需要在子项目内引用才有效, 余下依赖引入主项目即可
 * 3. 项目配置, (jsp为存放jsp文件夹) spring: mvc: view:  -->  prefix: /WEB-INF/jsp/  -->  suffix: .jsp
 * 4. jsp文件有三种语法, JSP表达式 / EL表达式 / JSTL标签库; 正常书写 html, 数据获取通过 ModelAndView 传递进来 [c标签最实用]
 * 5. 在controller内返回 ModelAndView, 渲染为jsp文件名称, 参数传递可用 request.setAttribute / modelAndView.addObject
 * 6. 可选: 在启动配置内, environment - working directory 下填写 $MODULE_WORKING_DIR$
 * 7. 进阶: 实现jsp效果后, 后续可通过 mvc 解耦视图和控制器, view 可使用模板依赖进行统一管理与继承, com.zhuogao.zhuogao.com.malk.hongfeng.controller 可通过 servlet 统一接管
 **/
@Slf4j
@Profile({"dev", "test"})
@RestController
@RequestMapping("/test/jsp")
public class JSPTestController {

    @Autowired
    private McAuthorizationDao dao;

    @RequestMapping("show")
    ModelAndView showEmp() {
        List<Map> list = JSON.parseArray(JSON.toJSONString(dao.findAll()), Map.class);
        ModelAndView mav = new ModelAndView("/test");
        mav.addObject("list", list);
        return mav;
    }

    @RequestMapping("/index")
    ModelAndView index(HttpServletRequest request) {
        //将用户信息保存到Request对象中
        request.setAttribute("name", "pan_junbiao的博客");
        request.setAttribute("blog", "https://blog.csdn.net/pan_junbiao");
        request.setAttribute("remark", "您好，欢迎访问 pan_junbiao的博客");
        //返回首页
        return new ModelAndView("/index");
    }

    @RequestMapping("/echarts")
    ModelAndView echarts() {
        return new ModelAndView("/echart");
    }

    /**
     * test
     */
    @GetMapping("test")
    McR test() {
        return McR.success();
    }
}
