package com.yfd.platform.modules.specialDocument.controller;


import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import com.yfd.platform.annotation.Log;
import com.yfd.platform.config.ResponseResult;
import com.yfd.platform.modules.specialDocument.domain.Nodes;
import com.yfd.platform.modules.specialDocument.service.INodesService;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

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

/**
 * <p>
 * 专项文档节点表 前端控制器
 * </p>
 *
 * @author LiMengNan
 * @since 2025-01-20
 */
@RestController
@RequestMapping("/specialDocument/sd_nodes")
public class NodesController {

    //专项文档节点服务类
    @Resource
    private INodesService nodesService;

    /***********************************
     * 用途说明：获取专项文档节点 树形结构
     * 参数说明
     *  nodeName        节点名称
     *  projectId        所属项目ID
     * 返回值说明:  专项文档节点树形结构
     ***********************************/
    @Log(module = "专项文档管理", value = "获取专项文档节点树形结构")
    @PostMapping("/getNodesTree")
    @ApiOperation("获取专项文档节点树形结构")
    @ResponseBody
    @PreAuthorize("@el.check('select:nodes')")
    public ResponseResult getNodesTree(String nodeName,String projectId) {
        List<Map<String, Object>> list = nodesService.getNodesTree(nodeName,projectId);
        return ResponseResult.successData(list);
    }

    /**********************************
     * 用途说明: 增加专项文档节点
     * 参数说明  nodes 专项文档节点信息
     * 返回值说明: com.yfd.platform.config.ResponseResult 返回增加成功或者失败
     ***********************************/
    @Log(module = "专项文档管理", value = "增加专项文档节点")
    @PostMapping("/addNodes")
    @ApiOperation("增加专项文档节点")
    @PreAuthorize("@el.check('add:nodes')")
    public ResponseResult addNodes(@RequestBody Nodes nodes) {
        //参数校验 对象    节点名称 所属项目ID
        if (ObjUtil.isEmpty(nodes) && StrUtil.isBlank(nodes.getNodeName()) && StrUtil.isBlank(nodes.getProjectId()) ) {
            return ResponseResult.error("参数为空");
        }
        return nodesService.addNodes(nodes);
    }

    /**********************************
     * 用途说明: 修改专项文档节点
     * 参数说明  nodes 专项文档节点信息
     * 返回值说明: com.yfd.platform.config.ResponseResult 返回修改成功或者失败
     ***********************************/
    @Log(module = "专项文档管理", value = "修改专项文档节点")
    @PostMapping("/updateNodes")
    @ApiOperation("修改专项文档节点")
    @PreAuthorize("@el.check('update:nodes')")
    public ResponseResult updateNodes(@RequestBody Nodes nodes) {
        //参数校验 对象    节点名称 所属项目ID id
        if (ObjUtil.isEmpty(nodes) && StrUtil.isBlank(nodes.getNodeName()) && StrUtil.isBlank(nodes.getProjectId()) && StrUtil.isBlank(nodes.getId())) {
            return ResponseResult.error("参数为空");
        }
        return nodesService.updateNodes(nodes);
    }

    /**********************************
     * 用途说明: 根据ID删除专项文档节点
     * 参数说明  id 专项文档节点ID
     * 返回值说明: com.yfd.platform.config.ResponseResult 返回删除成功或者失败
     ***********************************/
    @Log(module = "专项文档管理", value = "根据ID删除专项文档节点")
    @PostMapping("/deleteNodesById")
    @ApiOperation("根据ID删除专项文档节点")
    @PreAuthorize("@el.check('del:nodes')")
    public ResponseResult deleteNodesById(@RequestParam String id) {
        if (StrUtil.isBlank(id)) {
            return ResponseResult.error("参数为空");
        }
        boolean isOk = nodesService.deleteNodesById(id);
        if (isOk) {
            return ResponseResult.success();
        } else {
            return ResponseResult.error();
        }
    }


//    /**********************************
//     * 用途说明: 批量删除专项文档节点
//     * 参数说明  ids 专项文档节点id数组
//     * 返回值说明: com.yfd.platform.config.ResponseResult 返回批量删除成功或失败
//     ***********************************/
//    @Log(module = "专项文档管理", value = "批量删除专项文档节点",type = "1")
//    @PostMapping("/deleteNodesByIds")
//    @ApiOperation("批量删除专项文档节点")
//    @PreAuthorize("@el.check('del:nodes')")
//    public ResponseResult deleteSdprojectByIds(@RequestParam String ids) {
//        if (StrUtil.isBlank(ids)) {
//            return ResponseResult.error("参数为空");
//        }
//        String[] splitIds = ids.split(",");
//        // 数组转集合
//        List<String> dataset = Arrays.asList(splitIds);
//        boolean isOk = nodesService.removeByIds(dataset);
//        if (isOk) {
//            return ResponseResult.success();
//        } else {
//            return ResponseResult.error();
//        }
//    }

}
