package org.xyzh.system.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.xyzh.api.system.service.SysConfigService;
import org.xyzh.api.system.vo.SysConfigVO;
import org.xyzh.common.core.domain.ResultDomain;
import org.xyzh.common.core.page.PageRequest;
import org.xyzh.common.dto.sys.TbSysConfigDTO;


@RestController
@RequestMapping("/system/config")
public class SysConfigController {

    private static final Logger logger = LoggerFactory.getLogger(SysConfigController.class);

    @Autowired
    private SysConfigService sysConfigService;

    // ================= 系统配置相关接口 =================

    @PostMapping
    @PreAuthorize("hasAuthority('config:config:edit')")
    public ResultDomain<TbSysConfigDTO> createConfig(@RequestBody TbSysConfigDTO configDTO) {
        return sysConfigService.insertConfig(configDTO);
    }

    @PutMapping
    @PreAuthorize("hasAuthority('config:config:edit')")
    public ResultDomain<TbSysConfigDTO> updateConfig(@RequestBody TbSysConfigDTO configDTO) {
        return sysConfigService.updateConfig(configDTO);
    }

    @DeleteMapping
    @PreAuthorize("hasAuthority('config:config:edit')")
    public ResultDomain<Boolean> deleteConfig(@RequestBody TbSysConfigDTO configDTO) {
        return sysConfigService.deleteConfig(configDTO);
    }

    @PostMapping("/page")
    @PreAuthorize("hasAuthority('config:config:view')")
    public ResultDomain<SysConfigVO> getConfigPage(@RequestBody PageRequest<SysConfigVO> pageRequest) {
        return sysConfigService.getConfigPage(pageRequest);
    }

    @PostMapping("/list")
    @PreAuthorize("hasAuthority('config:config:view')")
    public ResultDomain<SysConfigVO> getConfigList(@RequestBody SysConfigVO filter) {
        return sysConfigService.getConfigList(filter);
    }


    
}
