//package com.backendsys.controller.Med;
//
//import com.backendsys.aspect.QueryNullCheck;
//import com.backendsys.entity.Med.MedMaterialDTO;
//import com.backendsys.entity.PageDTO;
//import com.backendsys.service.Med.MedMaterialService;
//import com.backendsys.utils.response.Result;
//import com.backendsys.utils.response.ResultEnum;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.security.access.prepost.PreAuthorize;
//import org.springframework.validation.annotation.Validated;
//import org.springframework.web.bind.annotation.*;
//
//import java.util.Arrays;
//import java.util.HashSet;
//import java.util.Set;
//
///**
// * 素材
// */
//@RestController
//public class MedMaterialController {
//
//    @Autowired
//    private MedMaterialService medMaterialService;
//
//    // 素材列表
//    @PreAuthorize("@sr.hasPermission('20.1')")
//    @GetMapping("/api/med/material/getMaterial")
//    public Result getMaterial(@Validated PageDTO pageDTO, @Validated MedMaterialDTO medMaterialDTO) {
//        return Result.success(medMaterialService.queryMaterial(pageDTO.getPage_num(), pageDTO.getPage_size(), medMaterialDTO));
//    }
//
//    // 素材中心 (仅显示启用/审核通过的)
//    @PreAuthorize("@sr.hasPermission('20.1.1')")
//    @GetMapping("/api/med/material/getMaterialPublish")
//    public Result getMaterialPublish(@Validated PageDTO pageDTO, @Validated MedMaterialDTO medMaterialDTO) {
//        return Result.success(medMaterialService.queryMaterialPublish(pageDTO.getPage_num(), pageDTO.getPage_size(), medMaterialDTO));
//    }
//
//    @PreAuthorize("@sr.hasPermission('20.1.2')")
//    @GetMapping("/api/med/material/getMaterialDetail")
//    public Result getMaterialDetail(@Validated(MedMaterialDTO.Detail.class) MedMaterialDTO medMaterialDTO) {
//        return Result.success(medMaterialService.queryMaterialDetail(medMaterialDTO));
//    }
//
//
//    /**
//     * [方法] 根据 素材类型 (material_type) 判断对应必填字段
//     * 当 material_type 为：
//     * - 4 时，content 不为空
//     * - 1,2,3 时，file 不为空
//     */
//    private Result checkMaterialContent(MedMaterialDTO medMaterialDTO) {
//        Integer material_type = medMaterialDTO.getMaterial_type();
//        if (material_type == 4) {
//            String content = medMaterialDTO.getContent();
//            if (content == null || content == "") return Result.error(ResultEnum.DATABASE_OPERATION_FAILED.getCode(), "(material_type:4) (content) 内容不能为空");
//        }
//        Set<Integer> materialTypes = new HashSet<>(Arrays.asList(1, 2, 3));
//        if (materialTypes.contains(material_type)) {
//            String file = medMaterialDTO.getFile();
//            if (file == null || file == "") return Result.error(ResultEnum.DATABASE_OPERATION_FAILED.getCode(), "(material_type:" + material_type + ") (file) 文件路径不能为空");
//        }
//        return null;
//    }
//
//    @PreAuthorize("@sr.hasPermission('20.1.3')")
//    @PostMapping("/api/med/material/createMaterial")
//    public Result createMaterial(@Validated(MedMaterialDTO.Create.class) @RequestBody MedMaterialDTO medMaterialDTO) {
//
//        // [方法] 根据 素材类型 (material_type) 判断对应必填字段
//        Result valid = checkMaterialContent(medMaterialDTO);
//        if (valid != null) {
//            return valid;
//        }
//        return Result.success(medMaterialService.insertMaterial(medMaterialDTO), "创建成功");
//    }
//
////    @GetMapping("/api/med/material/getTempCredentials")
////    public Result getTempCredentials() {
////        return Result.success(medMaterialService.getTempCredentials());
////    }
//
//
//
//    @PreAuthorize("@sr.hasPermission('20.1.4')")
//    @PutMapping("/api/med/material/updateMaterial")
//    public Result updateMaterial(@Validated(MedMaterialDTO.Update.class) @RequestBody MedMaterialDTO medMaterialDTO) {
//
//        // [方法] 根据 素材类型 (material_type) 判断对应必填字段
//        Result valid = checkMaterialContent(medMaterialDTO);
//        if (valid != null) {
//            return valid;
//        }
//        return Result.success(medMaterialService.updateMaterial(medMaterialDTO), "更新成功");
//    }
//
//
//    @PreAuthorize("@sr.hasPermission('20.1.5')")
//    @QueryNullCheck(serviceClass = MedMaterialService.class, serviceMethod = "queryMaterialById", argField = "material_id", message = "素材不存在")
//    @PutMapping("/api/med/material/auditMaterial")
//    public Result auditMaterial(@Validated(MedMaterialDTO.Audit.class) @RequestBody MedMaterialDTO medMaterialDTO) {
//        return Result.success(medMaterialService.auditMaterial(medMaterialDTO), "审核成功");
//    }
//
//    @PreAuthorize("@sr.hasPermission('20.1.6')")
//    @DeleteMapping("/api/med/material/deleteMaterial")
//    public Result deleteMaterial(@Validated(MedMaterialDTO.Delete.class) @RequestBody MedMaterialDTO medMaterialDTO) {
//        return Result.success(medMaterialService.deleteMaterial(medMaterialDTO), "删除成功");
//    }
//
//    @PreAuthorize("@sr.hasPermission('20.1.6')")
//    @DeleteMapping("/api/med/material/deleteMaterialBatch")
//    public Result deleteMaterialBatch(@Validated(MedMaterialDTO.Delete.class) @RequestBody MedMaterialDTO medMaterialDTO) {
//        return Result.success(medMaterialService.deleteMaterialBatch(medMaterialDTO.getMaterial_ids()), "删除成功");
//    }
//
//}
