package com.xhkjedu.sapi.controller.system;

import com.xhkjedu.annotation.Action;
import com.xhkjedu.sapi.model.system.TModule;
import com.xhkjedu.sapi.model.system.TModuledefault;
import com.xhkjedu.sapi.service.system.ModuledefaultService;
import com.xhkjedu.utils.N_Utils;
import com.xhkjedu.vo.ResultVo;
import com.xhkjedu.sapi.vo.system.ModuleSelVo;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

/**
* @author ywx
* @classname TModuledefaultController
* @description
* @date 2020/07/02 10:20
**/
@RestController
@RequestMapping("/moduledefault")
public class ModuledefaultController {
    @Resource
    private ModuledefaultService moduledefaultService;

    @PostMapping("/add")
    @Action("模块管理-增加")
    public ResultVo add(@RequestBody TModuledefault tModuledefault) {
        N_Utils.validation(new Object[]{tModuledefault.getBelong(),"模块归属",1,tModuledefault.getModulename(),"模块名称",2});
        if(tModuledefault.getLevel() == 2){
            N_Utils.validation(new Object[]{tModuledefault.getBelongcode(),"应用名称",1 });
        }
        return moduledefaultService.save(tModuledefault);
    }

    @PostMapping("/delete")
    @Action("模块管理-删除")
    public ResultVo delete(@RequestBody TModuledefault tModuledefault) {
        N_Utils.validation(new Object[]{tModuledefault.getModuleid(),"模块id",2});
        moduledefaultService.deleteById(tModuledefault.getModuleid());
        return new ResultVo(0,"删除成功");
    }

    @PostMapping("/update")
    @Action("模块管理-修改")
    public ResultVo update(@RequestBody TModuledefault tModuledefault) {
        String modulename = tModuledefault.getModulename().trim();
        tModuledefault.setModulename(modulename);
        N_Utils.validation(new Object[]{tModuledefault.getModuleid(),"模块id",2,modulename,"模块名称",2});
        moduledefaultService.update(tModuledefault);
        return new ResultVo(0,"修改成功");
    }

    @PostMapping("/detail")
    public ResultVo detail(@RequestBody TModuledefault tModuledefault) {
        N_Utils.validation(new Object[]{tModuledefault.getModuleid(),"模块id",2});
        TModuledefault moduledefault = moduledefaultService.findById(tModuledefault.getModuleid());
        return new ResultVo(0,"获取详情成功",moduledefault);
    }

    //列表
    @PostMapping("/list")
    public ResultVo list(@RequestBody TModuledefault tModuledefault) {
        Integer belong = tModuledefault.getBelong();
        Integer belongcode = tModuledefault.getBelongcode();
        N_Utils.validation(new Object[]{belong,"模块归属",1});
        List<TModuledefault> list = moduledefaultService.listAll(belong,belongcode,tModuledefault.getDisplay());
        return new ResultVo(0,"获取列表成功",list);
    }

    /**
     *功能描述  首层模块
     * @author WN
     * @date 2020/6/15
     * @param  * @param module
     * @return com.xhkjedu.vo.ResultVo
     */
    @PostMapping("/listsel")
    public ResultVo listForSel(@RequestBody TModuledefault tModuledefault){
        Integer belong = tModuledefault.getBelong();
        N_Utils.validation(new Object[]{belong,"模块归属",1});
        List<ModuleSelVo> lst = moduledefaultService.listLevelModule(belong);
        return new ResultVo(0,"获取一级应用成功",lst);
    }

    /*
     * @Description 显示
     * @Date 2024/6/19 17:17:34
     * @Author WN
     * @Param [module]
     * @Return com.xhkjedu.vo.ResultVo
     **/
    @PostMapping("/dis")
    @Action("默认模块-设置显示")
    public ResultVo updateModuleDisplay(@RequestBody TModule module){
        N_Utils.validation(new Object[]{module.getModuleid(),"模块id",2});
        moduledefaultService.handleDisplay(module.getModuleid());
        return new ResultVo(0,"设置模块显示成功");
    }

    /*
     * @Description 隐藏
     * @Date 2024/6/19 17:17:40
     * @Author WN
     * @Param [module]
     * @Return com.xhkjedu.vo.ResultVo
     **/
    @PostMapping("/undis")
    @Action("默认模块-设置不显示")
    public ResultVo updateModuleUnDisplay(@RequestBody TModule module){
        N_Utils.validation(new Object[]{module.getModuleid(),"模块id",2});
        moduledefaultService.handleUnDisplay(module.getModuleid());
        return new ResultVo(0,"设置模块不显示成功");
    }
}
