package com.boyue.hasfj.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.boyue.common.core.controller.BaseController;
import com.boyue.common.core.domain.AjaxResult;
import com.boyue.hasfj.domain.HtmlPages;
import com.boyue.hasfj.service.IHtmlPagesService;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;

import java.util.List;

/**
 * 页面前端视图控制器
 * 
 * @author boyue
 */
@Controller
@Tag(name = "页面前端视图")
public class HtmlPageViewController extends BaseController {
    
    @Autowired
    private IHtmlPagesService htmlPagesService;
    
    /**
     * 首页
     */
    @GetMapping("/hasfj")
    @Operation(summary = "淮安市司法局首页")
    public String index() {
        return "hasfj/index";
    }
    
    /**
     * 法律规定页面列表
     */
    @GetMapping("/hasfjlaw")
    @Operation(summary = "法律规定页面列表")
    public String lawList(ModelMap modelMap) {
        HtmlPages htmlPages = new HtmlPages();
        htmlPages.setPageType("law");
        htmlPages.setStatus(1); // 只查询启用状态的
        List<HtmlPages> list = htmlPagesService.selectHtmlPagesList(htmlPages);
        modelMap.put("lawList", list);
        return "hasfj/law_list";
    }
    
    /**
     * 典型案例页面列表
     */
    @GetMapping("/hasfjcase")
    @Operation(summary = "典型案例页面列表")
    public String caseList(ModelMap modelMap) {
        HtmlPages htmlPages = new HtmlPages();
        htmlPages.setPageType("case");
        htmlPages.setStatus(1); // 只查询启用状态的
        List<HtmlPages> list = htmlPagesService.selectHtmlPagesList(htmlPages);
        modelMap.put("caseList", list);
        return "hasfj/case_list";
    }
    
    /**
     * 表单下载页面列表
     */
    @GetMapping("/hasfjform")
    @Operation(summary = "表单下载页面列表")
    public String formList(ModelMap modelMap) {
        HtmlPages htmlPages = new HtmlPages();
        htmlPages.setPageType("form");
        htmlPages.setStatus(1); // 只查询启用状态的
        List<HtmlPages> list = htmlPagesService.selectHtmlPagesList(htmlPages);
        modelMap.put("formList", list);
        return "hasfj/form_list";
    }
    
    /**
     * 法律规定页面
     */
    @GetMapping("/show.html")
    @Operation(summary = "法律规定页面")
    public String showLawPage(@RequestParam(value = "Id", required = true) String formatId, ModelMap modelMap) {
        HtmlPages htmlPages = new HtmlPages();
        htmlPages.setFormatId(formatId);
        htmlPages.setPageType("law");
        htmlPages.setStatus(1); // 只查询启用状态的
        List<HtmlPages> list = htmlPagesService.selectHtmlPagesList(htmlPages);
        
        if (list != null && !list.isEmpty()) {
            HtmlPages page = list.get(0);
            // 使用专门的方法更新浏览次数
            htmlPagesService.updateHtmlPagesViewCount(page.getId());
            // 重新查询最新数据
            page = htmlPagesService.selectHtmlPagesById(page.getId());
            
            modelMap.put("page", page);
            return "hasfj/law";
        }
        return "error/404";
    }
    
    /**
     * 典型案例页面
     */
    @GetMapping("/showcase.html")
    @Operation(summary = "典型案例页面")
    public String showCasePage(@RequestParam(value = "Id", required = true) String formatId, ModelMap modelMap) {
        HtmlPages htmlPages = new HtmlPages();
        htmlPages.setFormatId(formatId);
        htmlPages.setPageType("case");
        htmlPages.setStatus(1); // 只查询启用状态的
        List<HtmlPages> list = htmlPagesService.selectHtmlPagesList(htmlPages);
        
        if (list != null && !list.isEmpty()) {
            HtmlPages page = list.get(0);
            // 使用专门的方法更新浏览次数
            htmlPagesService.updateHtmlPagesViewCount(page.getId());
            // 重新查询最新数据
            page = htmlPagesService.selectHtmlPagesById(page.getId());
            
            modelMap.put("page", page);
            return "hasfj/case";
        }
        return "error/404";
    }
    
    /**
     * 表单下载页面
     */
    @GetMapping("/table.html")
    @Operation(summary = "表单下载页面")
    public String showFormPage(@RequestParam(value = "Id", required = true) String formatId, ModelMap modelMap) {
        HtmlPages htmlPages = new HtmlPages();
        htmlPages.setFormatId(formatId);
        htmlPages.setPageType("form");
        htmlPages.setStatus(1); // 只查询启用状态的
        List<HtmlPages> list = htmlPagesService.selectHtmlPagesList(htmlPages);
        
        if (list != null && !list.isEmpty()) {
            HtmlPages page = list.get(0);
            // 使用专门的方法更新浏览次数
            htmlPagesService.updateHtmlPagesViewCount(page.getId());
            // 重新查询最新数据
            page = htmlPagesService.selectHtmlPagesById(page.getId());
            
            modelMap.put("page", page);
            return "hasfj/form";
        }
        return "error/404";
    }
    
    /**
     * 获取页面列表（按类型）
     */
    @GetMapping("/api/pages")
    @Operation(summary = "获取页面列表（按类型）")
    public AjaxResult getPagesByType(@RequestParam(value = "type", required = false) String pageType) {
        HtmlPages htmlPages = new HtmlPages();
        if (pageType != null && !pageType.isEmpty()) {
            htmlPages.setPageType(pageType);
        }
        htmlPages.setStatus(1); // 只查询启用状态的
        List<HtmlPages> list = htmlPagesService.selectHtmlPagesList(htmlPages);
        return AjaxResult.success(list);
    }
} 